#if !defined (__CINT__) || defined (__MAKECINT__) #include #include "TPhoTrigBits.hh" #include "Stntuple/obj/TStnDBManager.hh" #include "Stntuple/obj/TStnTriggerBlock.hh" #include "Stntuple/obj/TStnTriggerTable.hh" #endif using std::cout; using std::endl; //_____________________________________________________________________________ int TPhoTrigBits::BeginRun() { bit_Em8 = -1; bit_10Iso = -1; bit_25Iso = -1; bit_50 = -1; bit_70_em = -1; bit_70_jet = -1; bit_18NoIso = -1; bit_12DiPho = -1; bit_18DiPho = -1; bit_15Tight = -1; bit_phobjet = -1; bit_electron18 = -1; bit_L2_10DiPho = -1; bit_L2_16DiPho = -1; bit_L2_Em18Iso = -1; bit_L2_Em21IsoPass4 = -1; bit_L1_Em8 = -1; bit_L1_Em12 = -1; TStnTriggerTable* ptab = (TStnTriggerTable*) TStnDBManager::Instance()->GetTable("TriggerTable"); if(!ptab) { if(verbose) printf("TPhoTrigBits: did not find TriggeTable\n"); return 0; } if(verbose>10) ptab->Print(); int nl3 = ptab->NL3Triggers(); const TStnTrigger* trig; for(int i=0; iGetTrigger(3,i); if( ( (trig->Name()).Contains("PHOTON_L1_EM8",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_L1_EM8_",TString::kIgnoreCase) ) || ( (trig->Name()).Contains("PHOTON_L1_EM8_&_CLC",TString::kIgnoreCase ) && !(trig->Name()).Contains("PHOTON_L1_EM8_&_CLC_",TString::kIgnoreCase ) ) || ( (trig->Name()).Contains("PHOTON_L3PS200_L1_EM8",TString::kIgnoreCase ) && !(trig->Name()).Contains("PHOTON_L3PS200_L1_EM8_",TString::kIgnoreCase ) ) ) bit_Em8 = trig->Bit(); if( (trig->Name()).Contains("PHOTON_10_ISO",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_10_ISO_",TString::kIgnoreCase) ) bit_10Iso = trig->Bit(); if( ( (trig->Name()).Contains("PHOTON_25_ISO",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_25_ISO_",TString::kIgnoreCase) ) || ( (trig->Name()).Contains("PHOTON_25_ISO_PASS4",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_25_ISO_PASS4_",TString::kIgnoreCase) ) ) bit_25Iso = trig->Bit(); if( (trig->Name()).Contains("ULTRA_PHOTON50",TString::kIgnoreCase) && !(trig->Name()).Contains("ULTRA_PHOTON50_",TString::kIgnoreCase) ) bit_50 = trig->Bit(); if( (trig->Name()).Contains("SUPER_PHOTON70_L2_EM",TString::kIgnoreCase) && !(trig->Name()).Contains("SUPER_PHOTON70_L2_EM_",TString::kIgnoreCase) ) bit_70_em = trig->Bit(); if( (trig->Name()).Contains("SUPER_PHOTON70_L2_JET",TString::kIgnoreCase) && !(trig->Name()).Contains("SUPER_PHOTON70_L2_JET_",TString::kIgnoreCase) ) bit_70_jet = trig->Bit(); if( (trig->Name()).Contains("PHOTON_18_NOISO",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_18_NOISO_",TString::kIgnoreCase) ) bit_18NoIso = trig->Bit(); if( (trig->Name()).Contains("DIPHOTON_12",TString::kIgnoreCase) && !(trig->Name()).Contains("DIPHOTON_12_",TString::kIgnoreCase) ) bit_12DiPho = trig->Bit(); if( (trig->Name()).Contains("DIPHOTON_18",TString::kIgnoreCase) && !(trig->Name()).Contains("DIPHOTON_18_",TString::kIgnoreCase) ) bit_18DiPho = trig->Bit(); if( ( (trig->Name()).Contains("PHOTON15_TIGHT",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON15_TIGHT_",TString::kIgnoreCase) ) || ( (trig->Name()).Contains("PHOTON_15_TIGHT",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_15_TIGHT_",TString::kIgnoreCase) ) || ( (trig->Name()).Contains("PHOTON_15_TIGHT_L2_DPS",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_15_TIGHT_L2_DPS_",TString::kIgnoreCase) ) ) bit_15Tight = trig->Bit(); if( (trig->Name()).Contains("PHOTON_B_JET",TString::kIgnoreCase) && !(trig->Name()).Contains("PHOTON_B_JET_",TString::kIgnoreCase) ) bit_phobjet = trig->Bit(); if( (trig->Name()).Contains("ELECTRON_CENTRAL_18",TString::kIgnoreCase) && !(trig->Name()).Contains("ELECTRON_CENTRAL_18_",TString::kIgnoreCase) ) bit_electron18 = trig->Bit(); } int nl2 = ptab->NL2Triggers(); if(verbose>10) printf("L2 trig n %d\n",nl2); for(int i=0; iGetTrigger(2,i); if(trig) { if(trig->Name().CompareTo("L2_TWO_EM10_ISO",TString::kIgnoreCase)==0) bit_L2_10DiPho = i; if(trig->Name().CompareTo("L2_TWO_EM16",TString::kIgnoreCase)==0) bit_L2_16DiPho = i; if(trig->Name().CompareTo("L2_EM18_ISO",TString::kIgnoreCase)==0) bit_L2_Em18Iso = i; if(trig->Name().CompareTo("L2_EM21_ISO",TString::kIgnoreCase)==0) bit_L2_Em21IsoPass4 = i; } else { if(verbose>0) { printf("Did not find L2 trigger bit=%d\n",i); } } } int nl1 = ptab->NL1Triggers(); if(verbose>10) printf("L1 trig n %d\n",nl1); for(int i=0; iGetTrigger(1,i); if(trig) { if(trig->Name().CompareTo("L1_EM8",TString::kIgnoreCase)==0 || trig->Name().CompareTo("L1_EM8_&_CLC",TString::kIgnoreCase)==0) bit_L1_Em8 = i; if(trig->Name().CompareTo("L1_EM12",TString::kIgnoreCase)==0) bit_L1_Em12 = i; } else { if(verbose>0) { printf("Did not find L1 trigger bit=%d\n",i); } } } if(verbose>20) { printf("bit_Em8 =%3d\n",bit_Em8); printf("bit_10Iso =%3d\n",bit_10Iso); printf("bit_25Iso =%3d\n",bit_25Iso); printf("bit_50 =%3d\n",bit_50); printf("bit_70_em =%3d\n",bit_70_em); printf("bit_70_jet =%3d\n",bit_70_jet); printf("bit_18NoIso =%3d\n",bit_18NoIso); printf("bit_12DiPho =%3d\n",bit_12DiPho); printf("bit_18DiPho =%3d\n",bit_18DiPho); printf("bit_15Tight =%3d\n",bit_15Tight); printf("bit_phobjet =%3d\n",bit_phobjet); printf("bit_electron18 =%3d\n",bit_electron18); printf("bit_L2_10DiPho =%3d\n",bit_L2_10DiPho); printf("bit_L2_16DiPho =%3d\n",bit_L2_16DiPho); printf("bit_L2_Em18Iso =%3d\n",bit_L2_Em18Iso); printf("bit_L2_Em21IsoPass4 =%3d\n",bit_L2_Em21IsoPass4); printf("bit_L1_Em8 =%3d\n",bit_L1_Em8); printf("bit_L1_Em12 =%3d\n",bit_L1_Em12); } return 0; } //_____________________________________________________________________________ int TPhoTrigBits::Event() { q_Em8 = false; q_10Iso = false; q_25Iso = false; q_50 = false; q_70 = false; q_70_em = false; q_70_jet = false; q_18NoIso = false; q_12DiPho = false; q_18DiPho = false; q_15Tight = false; q_phobjet = false; q_electron18 = false; q_L2_10DiPho = false; q_L2_16DiPho = false; q_L2_Em18Iso = false; q_L2_Em21IsoPass4 = false; q_L1_Em8 = false; q_L1_Em12 = false; if(!trigBlock) { if(verbose>0) printf("TPhoTrigBits:Did not find TriggerBlock\n"); return 0; } TTl3d* tl3d = trigBlock->Tl3d(); if(tl3d!=NULL && tl3d->NPaths()>0) { if(bit_Em8>=0) q_Em8 = tl3d->PathPassed(bit_Em8); if(bit_10Iso>=0) q_10Iso = tl3d->PathPassed(bit_10Iso); if(bit_25Iso>=0) q_25Iso = tl3d->PathPassed(bit_25Iso); if(bit_50>=0) q_50 = tl3d->PathPassed(bit_50); if(bit_70_em>=0) q_70_em = tl3d->PathPassed(bit_70_em); if(bit_70_jet>=0) q_70_jet = tl3d->PathPassed(bit_70_jet); q_70 = q_70_em||q_70_jet; if(bit_18NoIso>=0) q_18NoIso = tl3d->PathPassed(bit_18NoIso); if(bit_12DiPho>=0) q_12DiPho = tl3d->PathPassed(bit_12DiPho); if(bit_18DiPho>=0) q_18DiPho = tl3d->PathPassed(bit_18DiPho); if(bit_15Tight>=0) q_15Tight = tl3d->PathPassed(bit_15Tight); if(bit_phobjet>=0) q_phobjet = tl3d->PathPassed(bit_phobjet); if(bit_electron18>=0) q_electron18 = tl3d->PathPassed(bit_electron18); } else { if(verbose>0) cout << "TPhoTrigBits: no tl3d found" << endl; } TTl2d* tl2d = trigBlock->Tl2d(); if(tl2d && tl2d->Data()->NDataWords()>0) { TTl2dL2Decision* l2d = tl2d->L2Decision(); if(l2d->PrescaledBit(bit_L2_10DiPho)>0) q_L2_10DiPho = true; if(l2d->PrescaledBit(bit_L2_16DiPho)>0) q_L2_16DiPho = true; if(l2d->PrescaledBit(bit_L2_Em18Iso)>0) q_L2_Em18Iso = true; if(l2d->PrescaledBit(bit_L2_Em21IsoPass4)>0) q_L2_Em21IsoPass4 = true; TTl2dL1Decision* l1d = tl2d->L1Decision(); if(l1d->L1DecisionBit(bit_L1_Em8)>0) q_L1_Em8 = true; if(l1d->L1DecisionBit(bit_L1_Em12)>0) q_L1_Em12 = true; } else { if(verbose>0) printf("TPhoTrigBits: no tl2d found\n"); } if(verbose>20) { printf("q_Em8 =%3d\n",q_Em8); printf("q_10Iso =%3d\n",q_10Iso); printf("q_25Iso =%3d\n",q_25Iso); printf("q_50 =%3d\n",q_50); printf("q_70_em =%3d\n",q_70_em); printf("q_70_jet =%3d\n",q_70_jet); printf("q_18NoIso =%3d\n",q_18NoIso); printf("q_12DiPho =%3d\n",q_12DiPho); printf("q_18DiPho =%3d\n",q_18DiPho); printf("q_15Tight =%3d\n",q_15Tight); printf("q_phobjet =%3d\n",q_phobjet); printf("q_electron18 =%3d\n",q_electron18); printf("q_L2_10DiPho =%3d\n",q_L2_10DiPho); printf("q_L2_16DiPho =%3d\n",q_L2_16DiPho); printf("q_L2_Em18Iso =%3d\n",q_L2_Em18Iso); printf("q_L2_Em21IsoPass4 =%3d\n",q_L2_Em21IsoPass4); printf("q_L1_Em8 =%3d\n",q_L1_Em8); printf("q_L1_Em12 =%3d\n",q_L1_Em12); } return 0; }