//----------------------------------------------------------------------------- // The photon status is determined by the following point system: // // Status Desciption // ------ ---------- // 1000.0 + Et a central or plug ELES bank // 2000.0 + Et a plug ELES bank passing the // loose photon ID cuts in PHOFND // 3000.0 + Et a plug ELES bank passing the // loose photon ID cuts and the loose photon // isolation cuts in PHOFND // 4000.0 + Et a central ELES bank passing Jeff's standard ID // cuts // 5000.0 + Et a central ELES bank passing Jeff's standard ID // cuts and Peter's corrected cone isolation cut. // Appropriate for triggers NOT requiring the // neural net isolation trigger // (e.g. PHOB_CEM5_50_NOISOL). // 6000.0 + Et a central ELES bank passing Jeff's standard ID // cuts and Peter's corrected cone isolation cut, // AND the box isolation cut. Appropriate for // triggers which require the neural net // isolation trigger (e.g. PHOB_CEM3_23_ISOL). // // Note that each class NOT is strictly contained by the class immediately // preceding it. // // fPwrd: bit mask of cuts that failed // // bit definitions, bit on means it failed the cut // bit 0 = Central photon // bit 1 = Pt of "e"<5 // bit 2 = (Chi_strip+Chi_wire)/2 < 20 // bit 3 = Lshr < 0.2 // bit 4 = Had/EM < sliding cut // bit 5 = N3D = 0 // bit 6 = Cone 0.4 calorimeter isolation <.15 // bit 7 = Sum Pt of tracks in cone 0.4 < 10.0 // bit 8 = Sum Pt of tracks in cone 0.4 < 2.0 // bit 9 = Second CES cluster < 1.0 GeV // bit 10 = 3x3 Chi < 5.0 // bit 11 = CHI eta < 20.0 (passes cut if not fiducial to PES) // bit 12 = CHI phi < 20.0 " " // bit 13 = VTX occ < 0.4 // bit 14 = Had/EM < sliding Plug cut // bit 15 = all FIDELE cuts // bit 16 = sliding second CES cluster cut (CEM only) // bit 17 = 3x3 box energy sum < 4GeV // bit 18 = 14<|Zstrip|<230 // bit 19 = |Xwire|<21.5 // bit 20 = Pt of "e"<1 // bit 21 = Pt of "e"<2 // bit 22 = (Chi_strip+Chi_wire)/2 < 4 // bit 23 = |(CES-CEM)/sigma| < 2 // bit 24 = Cone 0.4 calorimeter isolation <.10 // bit 25 = CPR track cut // bit 26 = CPR pulse height < 500// Corrections to E(iso): // // corrections to photon isolation energy are described in CDF-4170 // ---------------------------------------------------------------------------- // correcting for the lateral shower spread (leakage into the neighbouring // wedges: // // PCO4(leakage corrected) = PCO4 - PLCOR*PETC // // correcting for the multiple interactions: // // PCO4(leakage and mult.int. corr) = PCO4 - PVCOR - PLCOR*PETC //----------------------------------------------------------------------------- #include #include "Stntuple/obj/TStnPhoton.hh" #include "Stntuple/obj/exo_phoinfo.hh" #include "TBuffer.h" #include "TMemberInspector.h" #include "TError.h" ClassImp(TStnPhoton) //_____________________________________________________________________________ TStnPhoton::TStnPhoton(){ } //_____________________________________________________________________________ TStnPhoton::~TStnPhoton() { } //_____________________________________________________________________________ Int_t TStnPhoton::Cpr2E(Int_t i) { if(i<0 || i>=NCpr2()) return -999; if(i==0) return fCpr2E0&0xFFFF; if(i==1) return (fCpr2E0>>16)&0xFFFF; if(i==2) return fCpr2E1&0xFFFF; if(i==3) return (fCpr2E1>>16)&0xFFFF; return 0; } //_____________________________________________________________________________ Float_t TStnPhoton::EIso4(int flag) { // isolation energy in cone 0.4 with different corrections // flag = 0: no corrections // = 1: correct for the leakages // = 2: correct for the leakages and multiple interactions Float_t e_iso; if (flag == 0) { e_iso = fCo4; } else if (flag == 1) { e_iso = fCo4-fLcor*fEtc; } else if (flag == 2) { e_iso = fCo4-fLcor*fEtc-fVcor; } return e_iso; } //_____________________________________________________________________________ #ifdef ROOT_2_26 Int_t TStnPhoton::Compare(TObject* photon) #else Int_t TStnPhoton::Compare(const TObject* photon) const #endif { // compare based on status word Float_t dstat = fStat - ((TStnPhoton*) photon)->fStat; if (dstat < 0) return 1; else if (dstat > 0) return -1; else return 0; } //______________________________________________________________________________ void TStnPhoton::Streamer(TBuffer &R__b) { // Stream an object of class TStnPhoton. if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(); if (R__v) { } TObject::Streamer(R__b); R__b >> fVersion; fMomentum.Streamer(R__b); R__b >> fDetector; R__b >> fZv; R__b >> fEt; R__b >> fEtc; R__b >> fCo4; R__b >> fCo4PJW; R__b >> fCesx; R__b >> fCesz; R__b >> fCpr5ph; R__b >> fCpr5ps; R__b >> fDteta; R__b >> fEveta; R__b >> fCese; R__b >> fPhi; R__b >> fCo7; R__b >> fHadem; R__b >> fLshr; R__b >> fStr2; R__b >> fStre2; R__b >> fWwir2; R__b >> fWire2; R__b >> fSumpt4; R__b >> fVtxocc; R__b >> fPt; R__b >> fN3d; R__b >> fChi; R__b >> fChi3x3; R__b >> fChieta; R__b >> fChiphi; R__b >> fStat; R__b >> fBoxiso; R__b >> fCesflg; R__b >> fE; R__b >> fCeswht; R__b >> fCprwht; R__b >> fCesslide; R__b >> fWrd; R__b >> fSth; R__b >> fElind; R__b >> fChistr; R__b >> fChiwir; R__b >> fCessig; R__b >> fCespg; R__b >> fCespb; R__b >> fCprpg; R__b >> fCprpb; R__b >> fPt2; R__b >> fNtrwd3; R__b >> fCescprx; R__b >> fCescprq; R__b >> fTkcprx; R__b >> fTime; R__b >> fVcor; R__b >> fLcor; R__b >> fPesE; R__b >> fPesX; R__b >> fPesY; if(R__v>=2) { R__b >> fSHLinks; R__b >> fPRLinks; R__b >> fTowInd; R__b >> fTowEt; R__b >> fTowPhi; R__b >> fTowEta; } fPesE2 = fPprE = 0; if(R__v>=3) { R__b >> fPesE2; R__b >> fPprE; } fTowIso = fHademT = fLike = fSpare1 = 0; if(R__v>=4) { R__b >> fTowIso; R__b >> fHademT; R__b >> fLike; R__b >> fPemPesDr; R__b >> fSpare1; } fCeses = fCosStub = 0; if(R__v>=5) { R__b >> fCeses; R__b >> fCosStub; } fNIsoTrk = 0; fMaxIsoTrk = 0; if(R__v>=6) { R__b >> fNIsoTrk; R__b >> fMaxIsoTrk; } fHaloVar = 0; if(R__v>=7) { R__b >> fHaloVar; } fSiExpected = 0; if(R__v>=8) { R__b >> fSiExpected; } fCpr2E0 = 0; fCpr2E1 = 0; fCpr2I = -1; if(R__v>=9) { R__b >> fCpr2E0; R__b >> fCpr2E1; R__b >> fCpr2I; } } else { R__b.WriteVersion(TStnPhoton::IsA()); TObject::Streamer(R__b); R__b << fVersion; fMomentum.Streamer(R__b); R__b << fDetector; R__b << fZv; R__b << fEt; R__b << fEtc; R__b << fCo4; R__b << fCo4PJW; R__b << fCesx; R__b << fCesz; R__b << fCpr5ph; R__b << fCpr5ps; R__b << fDteta; R__b << fEveta; R__b << fCese; R__b << fPhi; R__b << fCo7; R__b << fHadem; R__b << fLshr; R__b << fStr2; R__b << fStre2; R__b << fWwir2; R__b << fWire2; R__b << fSumpt4; R__b << fVtxocc; R__b << fPt; R__b << fN3d; R__b << fChi; R__b << fChi3x3; R__b << fChieta; R__b << fChiphi; R__b << fStat; R__b << fBoxiso; R__b << fCesflg; R__b << fE; R__b << fCeswht; R__b << fCprwht; R__b << fCesslide; R__b << fWrd; R__b << fSth; R__b << fElind; R__b << fChistr; R__b << fChiwir; R__b << fCessig; R__b << fCespg; R__b << fCespb; R__b << fCprpg; R__b << fCprpb; R__b << fPt2; R__b << fNtrwd3; R__b << fCescprx; R__b << fCescprq; R__b << fTkcprx; R__b << fTime; R__b << fVcor; R__b << fLcor; R__b << fPesE; R__b << fPesX; R__b << fPesY; R__b << fSHLinks; R__b << fPRLinks; R__b << fTowInd; R__b << fTowEt; R__b << fTowPhi; R__b << fTowEta; R__b << fPesE2; R__b << fPprE; R__b << fTowIso; R__b << fHademT; R__b << fLike; R__b << fPemPesDr; R__b << fSpare1; R__b << fCeses; R__b << fCosStub; R__b << fNIsoTrk; R__b << fMaxIsoTrk; R__b << fHaloVar; R__b << fSiExpected; R__b << fCpr2E0; R__b << fCpr2E1; R__b << fCpr2I; } }