]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALJetTasks/AliEmcalJet.h
move to jet tasks
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / AliEmcalJet.h
1 #ifndef AliEmcalJet_H
2 #define AliEmcalJet_H
3
4 // $Id$
5
6 #include <TArrayS.h>
7 #include <TLorentzVector.h>
8 #include <TMath.h>
9 #include <TClonesArray.h>
10
11 #include "AliVParticle.h"
12 #include "AliVCluster.h"
13 #include "AliVTrack.h"
14
15 class AliEmcalJet : public AliVParticle
16 {
17  public:
18   AliEmcalJet() : AliVParticle(), fPt(0), fEta(0), fPhi(0), fM(0), fNEF(0), fArea(0), 
19                   fMaxCPt(0), fMaxNPt(0), fClusterIDs(), fTrackIDs() {;}
20   AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m);
21   AliEmcalJet(Double_t px, Double_t py, Double_t pz);
22   AliEmcalJet(const AliEmcalJet &jet); 
23   AliEmcalJet& operator=(const AliEmcalJet &jet);
24
25   Double_t          Px()                         const { return fPt*TMath::Cos(fPhi);  }
26   Double_t          Py()                         const { return fPt*TMath::Cos(fPhi);  }
27   Double_t          Pz()                         const { return fPt*TMath::SinH(fEta); }
28   Double_t          Pt()                         const { return fPt;                   }
29   Double_t          P()                          const { return fPt*TMath::CosH(fEta); }
30   Bool_t            PxPyPz(Double_t p[3])        const { p[0]=Px();p[1]=Py();p[2]=Pz(); return 1;         }
31   Double_t          Xv()                         const { return 0.;      }
32   Double_t          Yv()                         const { return 0.;      }
33   Double_t          Zv()                         const { return 0.;      }
34   Bool_t            XvYvZv(Double_t x[3])        const { x[0]=0;x[1]=0;x[2]=0; return 1;                  }
35   Double_t          OneOverPt()                  const { return 1./fPt;  }
36   Double_t          Phi()                        const { return fPhi;    }
37   Double_t          Theta()                      const { return 2*TMath::ATan(TMath::Exp(-fEta));         }
38   Double_t          E()                          const { Double_t p=P(); return TMath::Sqrt(M()*M()+p*p); }
39   Double_t          M()                          const { return 0.13957; }
40   Double_t          Eta()                        const { return fEta;    }
41   Double_t          Y()                          const { return 0.5*TMath::Log((E()+Pz())/(E()-Pz()));    }
42   Short_t           Charge()                     const { return 0;       }
43   Int_t             GetLabel()                   const { return -1;      }
44   Int_t             PdgCode()                    const { return 0;       }
45   const Double_t   *PID()                        const { return 0;       }
46   void              GetMom(TLorentzVector &vec)  const;
47   void              Print(Option_t* option = "") const;
48
49   Double_t          Area()                       const { return fArea;                     }
50   Short_t           ClusterAt(Int_t idx)         const { return fClusterIDs.At(idx);       }
51   AliVCluster      *ClusterAt(Int_t idx, TClonesArray *clusarray)  const { return dynamic_cast<AliVCluster*>(clusarray->At(ClusterAt(idx))); }
52   UShort_t          GetNumberOfClusters()        const { return Nn();                      }
53   Short_t           TrackAt(Int_t idx)           const { return fTrackIDs.At(idx);         }
54   UShort_t          GetNumberOfTracks()          const { return Nch();                     }
55   Double_t          MaxClusterPt()               const { return fMaxNPt;                   }
56   Double_t          MaxTrackPt()                 const { return fMaxCPt;                   }
57   Double_t          NEF()                        const { return fNEF;                      }
58   UShort_t          Nn()                         const { return fClusterIDs.GetSize();     }
59   UShort_t          Nch()                        const { return fTrackIDs.GetSize();       }
60   UShort_t          N()                          const { return Nch()+Nn();                }
61   AliVTrack        *TrackAt(Int_t idx, TClonesArray *trackarray)   const { return dynamic_cast<AliVTrack*>(trackarray->At(TrackAt(idx)));    } 
62
63   void              AddClusterAt(Int_t clus, Int_t idx){ fClusterIDs.AddAt(clus, idx);     }
64   void              AddTrackAt(Int_t track, Int_t idx) { fTrackIDs.AddAt(track, idx);      }
65   void              Clear(Option_t */*option*/="")     { fClusterIDs.Set(0); 
66                                                          fTrackIDs.Set(0);                 }
67   void              SetArea(Double_t a)                { fArea   = a;                      }
68   void              SetMaxClusterPt(Double32_t t)      { fMaxNPt = t;                      }
69   void              SetMaxTrackPt(Double32_t t)        { fMaxCPt = t;                      }
70   void              SetNEF(Double_t nef)               { fNEF    = nef;                    }
71   void              SetNumberOfClusters(Int_t n)       { fClusterIDs.Set(n);               }
72   void              SetNumberOfTracks(Int_t n)         { fTrackIDs.Set(n);                 }
73   void              SortConstituents();
74
75  protected:
76   Double32_t  fPt;           //[0,0,12]   pt 
77   Double32_t  fEta;          //[-1,1,12]  eta
78   Double32_t  fPhi;          //[0,6.3,12] phi
79   Double32_t  fM;            //[0,0,8]    mass
80   Double32_t  fNEF;          //[0,1,8]    neutral energy fraction
81   Double32_t  fArea;         //[0,0,12]   area
82   Double32_t  fMaxCPt;       //[0,0,12]   pt of maximum track
83   Double32_t  fMaxNPt;       //[0,0,12]   pt of maximum cluster
84   TArrayS     fClusterIDs;   //           array of cluster constituents  
85   TArrayS     fTrackIDs;     //           array of track constituents    
86
87   ClassDef(AliEmcalJet,2) // ESD jet class in cylindrical coordinates
88 };
89 #endif