Here is some code which looks to see if an event passes a specific Level 3 trigger, and for each interesting event, writes the Level 3 triggers which passed. I'm pretty sure, if you change the appropriate 3's to 2's or 1's (that being all of them), you get the Level 2 or 1 triggers. This is for a module which reads the Standard Ntuple. Something like what can be found here: http://cdfcodebrowser.fnal.gov/CdfCode/source/Stntuple/ana/ This is also pretty fancy in that it writes these to the file output.txt. If you just wanted it to the display, delete obvious lines and change "os" to "cout". In Header File: TStnTriggerBlock* fTriggerBlock; TStnDBManager* dbm; // DB and TriggerTable to get Triggers... TStnTriggerTable* tbl; With other include directives: #include #include "Stntuple/obj/TStnDBManager.hh" #include "Stntuple/obj/TStnTriggerTable.hh" In BeginJob(): RegisterDataBlock("TriggerBlock" ,&fTriggerBlock ); In BeginRun(): dbm = TStnDBManager::Instance(); tbl = (TStnTriggerTable*) dbm->GetTable("TriggerTable"); In Event(int ientry): fTriggerBlock->GetEntry(ientry); Int_t nEEC18 = fTriggerBlock->GetListOfPassedTriggers(tbl , "EXPRESS_ELECTRON_CENTRAL_18" , 3, list); if (InterestingEvent) { ofstream os("output.txt", ios_base::app); os << TStnModule::GetHeaderBlock()->EventNumber() << endl; TTl3d* lev3 = fTriggerBlock->Tl3d(); for (int i = 0; i < lev3->NPaths(); i++) { if (lev3->PathPassed(i)) { const TStnTrigger* trig = tbl->GetTrigger(3,i); os << trig->Name() << endl; } } os << endl; } where nEEC18 is, e.g., the number of level 3 triggers passed with the phrase "EXPRESS_ELECTRON_CENTRAL_18" in the Trigger Table tbl, and InterestingEvent is the criteria for an interesting event. If you have any questions, email cwolfe@hep.uchicago.edu --Collin