Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

TMBEMCluster.hpp

Go to the documentation of this file.
00001 #ifndef TMB_TREE_TMBEMCLUSTER_HPP__
00002 #define TMB_TREE_TMBEMCLUSTER_HPP__
00003 
00005 //                                                                      //
00006 //  TMBEMCluster                                                        //
00007 //                                                                      //
00008 //  Based on original TMBTree Emcl class                                //
00009 //  E. Nagy and E. Thomas                                               //
00010 //  Revised by E. Nagy October 30th 2003                                //
00011 //                                                                      //
00012 //  Modified by J. Zhu January 2nd 2005                                 //
00013 //      remove some duplicated variables, add more variables            //
00014 //      also add comments for each varialbe                             //
00015 //                                                                      //
00017 
00018 #include "tmb_tree/TMBLorentzVector.hpp"
00019 #include "tmb_tree/TMBCellContainer.hpp"
00020 
00021 #ifndef ROOT_TRef
00022 #include "TRef.h"
00023 #endif
00024 
00025 #ifndef ROOT_TRefArray
00026 #include "TRefArray.h"
00027 #endif
00028 
00029 #include "TArrayI.h"
00030 #include "TArrayF.h"
00031 #include "TString.h"
00032 
00033 #include <cassert>
00034 
00035 class TMBTrack;
00036 class TMBCps;
00037 class TMBFps;
00038 class TMBVertex;
00039 
00044 class TMBEMCluster : public TMBLorentzVector {
00045 
00046 private:
00048     Float_t     _uncorrE;
00050     Float_t     _q;           
00052     Int_t       _id;
00054     Float_t     _iso;
00056     Float_t     _EisoCore;
00058     Int_t       _isol;
00060     Int_t       _nb_CPS;
00062     Int_t       _nb_FPS;
00064     Float_t     _EMScalarEt;
00066     Float_t     _floorE[6];
00068     Float_t     _floorX[6];
00070     Float_t     _floorY[6];
00072     Float_t     _floorZ[6];
00074     Float_t     _flrS1[6];
00076     Float_t     _flrS2[6];
00078     Float_t     _flrC[6];
00080     Int_t       _flrNch[6];
00082     Float_t     _EMfrac;
00084     Float_t     _HA;
00086     Float_t     _HMx7;
00088     Float_t     _HMx8;
00090     Float_t     _Excess;
00092     Float_t     _rRC[5];
00094     Float_t     _rR1[5];
00096     Float_t     _rR2[5];
00098     TRef        _chptr;
00100     TRef        _vtxref;
00102     TRefArray   _cpsptr;
00104     TRefArray   _fpsptr;
00105     TRef        _container;
00106 
00107     // TRefArray   _ecells;
00108     std::vector<TMBCellContainer::Index_t> _ecells;
00109 
00110     // New variables from p14.05.00
00112     Bool_t      _is_in_phi_fiducial;
00114     Bool_t      _is_in_eta_fiducial;
00116     Float_t     _CalE;
00118     Float_t     _CalPhi;
00120     Float_t     _CalEta;
00122     Float_t     _CalDetectorPhi;
00124     Float_t     _CalDetectorEta;
00126     Float_t     _sigE;
00128     Float_t     _Lhood8;
00129 
00130     Float_t     _LhoodCps;
00131     Float_t     _Lhood3;
00132     Float_t     _Lhood4Iso;
00133     Float_t     _Lhood4EOP;
00134 
00136     Float_t     _TrMatchChi2ProbBest;
00138     Float_t     _SpatialTrMatchChi2ProbBest;
00139 
00140     TRef        _chptrBest;
00141   TRef        _chptrBestSpatial;
00143     Int_t       _nChPart;
00145     TRefArray   _ChPart;
00147     TArrayF     _TrMatchChi2Prob;
00149     TArrayF     _SpatialTrMatchChi2Prob;
00150 
00153     TRef        _CpsBest;
00155     Float_t     _CPSFitZVtxBest;
00157     Float_t     _CPSFitZVtxErrBest;
00159     Float_t     _CPSFitDCABest;
00161     Float_t     _CPSFitDCAErrBest;
00163     Float_t     _CPSChi2MatchBest;
00165     TArrayF     _CPSFitChi2Match;
00167     TArrayF     _CPSFitZVtx;
00169     TArrayF     _CPSFitZVtxErr;
00171     TArrayF     _CPSFitDCA;
00173     TArrayF     _CPSFitDCAErr;
00174     
00175     // New variables for p17 photon/electron ID
00176     Float_t     _bestPSz;
00177     TArrayF     _PSz;
00179     Int_t       _has_cps_match;
00180     TArrayI     _cps_match;
00182     Float_t     _bestcps_match_chi2;
00183     TArrayF     _cps_match_chi2;
00185     Int_t       _nEMLikeCPSClusters;
00187     Float_t     _diphoton_p4v[4];
00188 
00195     Int_t    _emhits_cpsUsed; 
00197     Int_t    _emhits_cftA[2];
00199     Int_t    _emhits_cftS[2]; 
00201     Int_t    _emhits_smtA[2]; 
00203     Int_t    _emhits_smtS[2]; 
00205     Float_t  _emhits_cftA_chi2[2]; 
00207     Float_t  _emhits_cftS_chi2[2];
00209     Float_t  _emhits_smtA_chi2[2];
00211     Float_t  _emhits_smtS_chi2[2];
00213     Float_t  _emhits_e_f_discriminant; 
00214 
00216     Float_t  _clusterpx;
00218     Float_t  _clusterpy;
00220     Float_t  _clusterpz;
00221 
00222 public:
00223     TMBEMCluster() {}
00224 
00225     TMBEMCluster(Float_t E, Float_t pT, Float_t eta, Float_t phi,
00226                  Float_t uncorrE, Float_t q,
00227                  Int_t id, Float_t iso, Float_t EisoCore, Int_t isol,
00228                  Int_t nb_CPS, Int_t nb_FPS, Float_t EMScalarEt,
00229                  Float_t* floorE, Float_t* floorX, Float_t* floorY, Float_t* floorZ, 
00230                  Float_t* flrS1, Float_t* flrS2, Float_t* flrC, Int_t* flrNch,
00231                  Float_t EMfrac, Float_t HA, Float_t HMx7, Float_t HMx8,
00232                  Float_t Excess, 
00233                  Float_t* rRC, Float_t* rR1, Float_t* rR2, 
00234                  TRef chptr, TRef vtxref, 
00235                  TRefArray* cpsptr, TRefArray* fpsptr, 
00236                  const std::vector<TMBCellContainer::Index_t>& ecells,
00237                  TMBCellContainer *cont);
00238     
00239     void Set(Float_t E, Float_t pT, Float_t eta, Float_t phi,
00240              Float_t uncorrE, Float_t q,
00241              Int_t id, Float_t iso, Float_t EisoCore, Int_t isol,
00242              Int_t nb_CPS, Int_t nb_FPS, Float_t EMScalarEt,
00243              Float_t* floorE, Float_t* floorX, Float_t* floorY, Float_t* floorZ, 
00244              Float_t* flrS1, Float_t* flrS2, Float_t* flrC, Int_t* flrNch,
00245              Float_t EMfrac, Float_t HA, Float_t HMx7, Float_t HMx8,
00246              Float_t Excess,
00247              Float_t* rRC, Float_t* rR1, Float_t* rR2, 
00248              TRef chptr, TRef vtxref, 
00249              TRefArray* cpsptr, TRefArray* fpsptr, 
00250              const std::vector<TMBCellContainer::Index_t>& ecells,
00251              TMBCellContainer *cont);
00252 
00253     void Set1(Bool_t is_in_phi_fiducial,
00254               Bool_t is_in_eta_fiducial, Float_t CalE,
00255               Float_t CalPhi, Float_t CalEta, Float_t CalDetectorPhi,
00256               Float_t CalDetectorEta, Float_t sigE, TRef CpsBest,
00257               Float_t CPSFitZVtxBest, Float_t CPSFitZVtxErrBest,
00258               Float_t CPSFitDCABest, Float_t CPSFitDCAErrBest,
00259               Float_t CPSChi2MatchBest, 
00260               Float_t Lhood8, Float_t LhoodCps, Float_t Lhood3, 
00261               Float_t Lhood4Iso, Float_t Lhood4EOP,  Float_t clusterpx, Float_t clusterpy, Float_t clusterpz,
00262               Float_t TrMatchChi2ProbBest, TRef chptrBest,
00263               Float_t SpatialTrMatchChi2ProbBest, TRef chptrBestSpatial,
00264               Int_t nChPart, TRefArray* ChPart, 
00265               TArrayF* TrMatchChi2Prob, TArrayF* SpatialTrMatchChi2Prob,
00266               TArrayF* CPSFitChi2Match, TArrayF* CPSFitZVtx, TArrayF* CPSFitZVtxErr,
00267               TArrayF* CPSFitDCA, TArrayF* CPSFitDCAErr);
00268           
00269     void Set2(Float_t bestPSz, TArrayF* PSz, Int_t has_cps_match, TArrayI* cps_match, 
00270               Float_t bestcps_match_chi2, TArrayF* cps_match_chi2, 
00271               Int_t nEMLikeCPSClusters, Float_t* diphoton_p4v,
00272               Int_t emhits_cpsUsed, 
00273               Int_t* emhits_cftA, Int_t* emhits_cftS, 
00274               Int_t* emhits_smtA, Int_t* emhits_smtS,
00275               Float_t* emhits_cftA_chi2, Float_t* emhits_cftS_chi2,
00276               Float_t* emhits_smtA_chi2, Float_t* emhits_smtS_chi2,
00277               Float_t emhits_e_f_discriminant);
00278 
00279     Float_t       uncorrE()  const  {return _uncorrE;}
00280     Float_t       charge()   const  {return _q;}
00281     Int_t         id()       const  {return _id;}
00282     Int_t         typeID()   const  {return _id;}
00283     Float_t       iso()      const  {return _iso;}
00284     Float_t       EisoCore() const  {return _EisoCore;}
00285     Int_t         isol()     const  {return _isol;}
00286     Int_t         nb_CPS()   const  {return _nb_CPS;}
00287     Int_t         nb_FPS()   const  {return _nb_FPS;}
00288     Float_t       EMScalarEt() const {return _EMScalarEt;}
00289     Float_t       floorE(Int_t nfloor)  const {return _floorE[nfloor];}
00290     Float_t       floorX(Int_t nfloor)  const {return _floorX[nfloor];}
00291     Float_t       floorY(Int_t nfloor)  const {return _floorY[nfloor];}
00292     Float_t       floorZ(Int_t nfloor)  const {return _floorZ[nfloor];}
00293     Float_t       flrS1(Int_t nfloor)   const {return _flrS1[nfloor];}
00294     Float_t       flrS2(Int_t nfloor)   const {return _flrS2[nfloor];}
00295     Float_t       flrC(Int_t nfloor)    const {return _flrC[nfloor];}
00296     Int_t         flrNch(Int_t nfloor)  const {return _flrNch[nfloor];}
00297     Float_t       emfrac()      const        {return _EMfrac;}
00298     Float_t       HA()          const        {return _HA;}
00299     Float_t       HMx7()        const        {return _HMx7;}
00300     Float_t       HMx8()        const        {return _HMx8;}
00301     Float_t       Excess()      const        {return _Excess;}
00302     Float_t       rRC(Int_t i)  const        {return _rRC[i];}
00303     Float_t       rR1(Int_t i)  const        {return _rR1[i];}
00304     Float_t       rR2(Int_t i)  const        {return _rR2[i];}
00305     const TMBTrack*      GetChargedTrack() const    {return _chptr.IsValid() ? (TMBTrack*)_chptr.GetObject() : 0;}
00306     const TRef&          GetChargedTrackRef() const {return _chptr;}
00307     const TMBVertex*     GetVertex()       const    {return _vtxref.IsValid() ? (TMBVertex*)_vtxref.GetObject() : 0;}
00308     const TRef&          GetVertexRef()    const    {return _vtxref;}
00309     const TMBCps*        GetCps(Int_t icps)const    {return (TMBCps*)_cpsptr.At(icps);}
00310     Int_t                ncps()            const    {return _cpsptr.GetLast()+1;}
00311     const TMBFps*        GetFps(Int_t ifps)const    {return (TMBFps*)_fpsptr.At(ifps);}
00312     Int_t                nfps()            const    {return _fpsptr.GetLast()+1;}
00313     Float_t             clusterPx()        const    {return _clusterpx;}
00314     Float_t             clusterPy()        const    {return _clusterpy;}
00315     Float_t             clusterPz()        const    {return _clusterpz;}
00316 
00317     const TMBCaloCell*  GetCaloCell(UInt_t icell) const   {
00318 
00319         assert(icell < (UInt_t)_ecells.size());
00320         if(TMBCellContainer *c = _container.IsValid() ? (TMBCellContainer *)_container.GetObject() : 0) {
00321             assert(_ecells[icell] < c->NumCells());
00322             return c->GetCell(_ecells[icell]);
00323         } else {
00324             return 0;
00325         }
00326     }
00327 
00328     UInt_t         ncells() const { return (UInt_t)_ecells.size();}
00329 
00330     // New methods for  p14.05.00
00331 
00332     Bool_t       is_in_phi_fiducial()    const        {return _is_in_phi_fiducial;}
00333     Bool_t       is_in_eta_fiducial()    const        {return _is_in_eta_fiducial;}
00334     Bool_t       is_in_fiducial()        const        {return _is_in_eta_fiducial && _is_in_phi_fiducial;}
00335     Float_t      CalE()                  const        {return _CalE;}
00336     Float_t      CalPhi()                const        {return _CalPhi;}
00337     Float_t      CalEta()                const        {return _CalEta;}
00338     Float_t      CalDetectorPhi()        const        {return _CalDetectorPhi;}
00339     Float_t      CalDetectorEta()        const        {return _CalDetectorEta;}
00340     Float_t      sigE()                  const        {return _sigE;}
00341     TMBCps*      getPtrCPS()             const        {return _CpsBest.IsValid() ? (TMBCps*)_CpsBest.GetObject() : 0;}
00342     const TRef&  getPtrCPSRef()          const        {return _CpsBest;}
00343     Float_t      CPSFitZVtxBest()        const        {return _CPSFitZVtxBest;}
00344     Float_t      CPSFitZVtxErrBest()     const        {return _CPSFitZVtxErrBest;}
00345     Float_t      CPSFitDCABest()         const        {return _CPSFitDCABest;}
00346     Float_t      CPSFitDCAErrBest()      const        {return _CPSFitDCAErrBest;}
00347     Float_t      CPSChi2MatchBest()      const        {return _CPSChi2MatchBest;}
00348     Float_t      Lhood8()                const        {return _Lhood8;}
00349 
00350     Float_t      LhoodCps()              const        { return _LhoodCps; }
00351     Float_t      Lhood3()                const        { return _Lhood3; }
00352     Float_t      Lhood4Iso()             const        { return _Lhood4Iso; }
00353     Float_t      Lhood4EOP()             const        { return _Lhood4EOP; }
00354 
00355     Float_t      track_match_chi2prob()  const        {return _TrMatchChi2ProbBest;}
00356     Float_t      track_match_spatialchi2prob()  const {return _SpatialTrMatchChi2ProbBest;}
00357     Bool_t       has_track_match(Float_t Chi2Cut=0.01)               const        {return (_TrMatchChi2ProbBest>Chi2Cut);}
00358     Bool_t       has_spatial_track_match(Float_t Chi2Cut=0.01)       const        {return (_SpatialTrMatchChi2ProbBest>Chi2Cut);}
00359     const TMBTrack*     getPtrChp()       const        {return _chptrBest.IsValid() ? (TMBTrack*)_chptrBest.GetObject() : 0;}
00360     const TMBTrack*     getPtrChpSpatial()       const        {return _chptrBestSpatial.IsValid() ? (TMBTrack*)_chptrBestSpatial.GetObject() : 0;}
00361     const TRef&         getPtrChpRef()    const        {return _chptrBest;}
00362     const TRef&         getPtrChpSpatialRef()    const        {return _chptrBestSpatial;}
00363     Int_t        nChPart()               const         {return _ChPart.GetLast()+1;}
00364     const TMBTrack*     GetChPart(Int_t itr)    const    {return (TMBTrack*)_ChPart.At(itr);}
00365     Float_t      track_match_chi2prob(Int_t itr) const   {return (Float_t)_TrMatchChi2Prob.At(itr);}
00366     Float_t      track_match_spatialchi2prob(Int_t itr) const {return (Float_t)_SpatialTrMatchChi2Prob.At(itr);}
00367     Float_t      CPSFitChi2Match(Int_t icps) const    {return (Float_t)_CPSFitChi2Match.At(icps);}
00368     Float_t      CPSFitZvtx(Int_t icps)  const        {return (Float_t)_CPSFitZVtx.At(icps);}
00369     Float_t      CPSFitZvtxErr(Int_t icps)const       {return (Float_t)_CPSFitZVtxErr.At(icps);}
00370     Float_t      CPSFitDCA(Int_t icps)   const        {return (Float_t)_CPSFitDCA.At(icps);}
00371     Float_t      CPSFitDCAErr(Int_t icps) const       {return (Float_t)_CPSFitDCAErr.At(icps);}
00372     // New photon/electron ID tools for p17
00373     Float_t      bestPSz()                  const {return (Float_t) _bestPSz;}
00374     Float_t      PSz(Int_t icps)            const {return (Float_t) _PSz.At(icps);}
00375     Int_t        has_cps_match()            const {return (Int_t)   _has_cps_match;}
00376     Int_t        cps_match(Int_t icps)      const {return (Int_t)   _cps_match.At(icps);}
00377     Float_t      bestcps_match_chi2()       const {return (Float_t) _bestcps_match_chi2;}
00378     Float_t      cps_match_chi2(Int_t icps) const {return (Float_t) _cps_match_chi2.At(icps);}
00379     Int_t        nEMLikeCPSClusters()       const {return (Int_t)   _nEMLikeCPSClusters;}
00380     const Float_t*     diphoton_p4v()       const {return  _diphoton_p4v;}
00381   
00382     // EMHits on the road methods
00383     Int_t    emhits_cpsUsed() const {return (Int_t) _emhits_cpsUsed;}
00384     const Int_t*   emhits_cftA() const {return _emhits_cftA;}
00385     const Int_t*   emhits_cftS() const {return _emhits_cftS;}
00386     const Int_t*   emhits_smtA() const {return _emhits_smtA;}
00387     const Int_t*   emhits_smtS() const {return _emhits_smtS;}
00388     const Float_t* emhits_cftA_chi2() const {return _emhits_cftA_chi2;}
00389     const Float_t* emhits_cftS_chi2() const {return _emhits_cftS_chi2;}
00390     const Float_t* emhits_smtA_chi2() const {return _emhits_smtA_chi2;}
00391     const Float_t* emhits_smtS_chi2() const {return _emhits_smtS_chi2;}
00392     Float_t emhits_e_f_discriminant() const {return (Float_t) _emhits_e_f_discriminant;}
00393 
00394     ~TMBEMCluster() {;}
00395 
00396     ClassDef(TMBEMCluster, 3);
00397 };
00398 
00399 #endif // TMB_TREE_TMBEMCLUSTER_HPP__
00400 

Generated on Tue Mar 28 10:13:04 2006 for CAF by doxygen 1.3.4