#ifndef TMBEmcl_H #define TMBEmcl_H ////////////////////////////////////////////////////////////////////////// // // // TMBTree Emcl class // // E. Nagy and E. Thomas // // Revised by E. Nagy October 30th 2003 // // // ////////////////////////////////////////////////////////////////////////// #include "tmb_tree/TPhysObj.hpp" #ifndef ROOT_TRef #include "TRef.h" #endif #ifndef ROOT_TRefArray #include "TRefArray.h" #endif #include "TArrayI.h" #include "TArrayF.h" #include "TString.h" class TMBTrks; class TMBCps; class TMBFps; class TMBEmCells; class TMBVrts; class TMBEmcl : public TPhysObj { private: Float_t _E; Float_t _pT; Float_t _eta; Float_t _phi; Float_t _pxyz[3]; //px py pz Float_t _q; //charge Int_t _id; Float_t _iso; Float_t _EisoCore; Int_t _isol; Int_t _nb_CPS; Int_t _nb_FPS; Float_t _floorE[6]; Float_t _floorX[6]; Float_t _floorY[6]; Float_t _floorZ[6]; Float_t _flrS1[6]; Float_t _flrS2[6]; Float_t _flrC[6]; Int_t _flrNch[6]; Float_t _EMfrac; Float_t _HA; Float_t _HMx7; Float_t _HMx8; Float_t _HMx41; Float_t _elk8; Float_t _elk41; Float_t _Excess; Float_t _rRC[5]; Float_t _rR1[5]; Float_t _rR2[5]; TString _algoname; TRef _chptr; TRef _vtxref; TRefArray _cpsptr; TRefArray _fpsptr; TRefArray _ecells; // New variables from p14.05.00 Bool_t _is_in_fiducial; Bool_t _is_in_phi_fiducial; Bool_t _is_in_eta_fiducial; Float_t _Calpx; Float_t _Calpy; Float_t _Calpz; Float_t _Calpt; Float_t _CalE; Float_t _CalPhi; Float_t _CalEta; Float_t _CalDetectorPhi; Float_t _CalDetectorEta; Float_t _sigE; TRef _CpsBest; Float_t _CpsFitZVtx; Float_t _CpsFitZVtxErr; Float_t _CpsFitDCA; Float_t _CpsFitDCAErr; Float_t _CpsChi2Match; Float_t _LhoodIso8; Float_t _Lhood8; Bool_t _has_track_match; Float_t _TrMatchChi2ProbBest; Float_t _SpatialTrMatchChi2ProbBest; TRef _chptrBest; Int_t _nChPart; TRefArray _ChPart; TArrayF _TrMatchChi2Prob; TArrayF _SpatialTrMatchChi2Prob; TArrayF _CPSFitChi2Match; TArrayF _CPSFitZVtx; TArrayF _CPSFitZVtxErr; TArrayF _CPSFitDCA; TArrayF _CPSFitDCAErr; // New variables for p17 photon/electron ID Float_t _bestPSz; TArrayF _PSz; // return true if EM object is matched with CPS object Int_t _has_cps_match; TArrayI _cps_match; // return distance in resolutions (fi,z) between CPS and EM, projected onto CPS Float_t _bestcps_match_chi2; TArrayF _cps_match_chi2; // number of EM-like CPS clusters Int_t _nEMLikeCPSClusters; // 4 vector of di-photon candidate (E, px, py, pz) Float_t _diphoton_p4v[4]; public: TMBEmcl &operator=( TMBEmcl &orig) { return *this; } TMBEmcl &operator=(const TMBEmcl &orig) { _E = orig._E; _pT = orig._pT; _eta = orig._eta; _phi = orig._phi; for(int j=0;j<3;j++) _pxyz[j] = orig._pxyz[j]; _q = orig._q; _id = orig._id; _iso = orig._iso; _EisoCore = orig._EisoCore; _isol = orig._isol; _nb_CPS = orig._nb_CPS; _nb_FPS = orig._nb_FPS; for(int j=0;j<6;j++){ _floorE[j] = orig._floorE[j]; _floorX[j] = orig._floorX[j]; _floorY[j] = orig._floorY[j]; _floorZ[j] = orig._floorZ[j]; _flrS1[j] = orig._flrS1[j]; _flrS2[j] = orig._flrS2[j]; _flrC[j] = orig._flrC[j]; _flrNch[j] = orig._flrNch[j]; } _EMfrac = orig._EMfrac; _HA = orig._HA; _HMx7 = orig._HMx7; _HMx8 = orig._HMx8; _HMx41 = orig._HMx41; _elk8 = orig._elk8; _elk41 = orig._elk41; _Excess = orig._Excess; _algoname = orig._algoname; _chptr = orig._chptr; _vtxref = orig._vtxref; for(int j=0;j<5;j++){ _rRC[j] = orig._rRC[j]; _rR1[j] = orig._rR1[j]; _rR2[j] = orig._rR2[j]; } _cpsptr.Clear(); for (Int_t i=0; i