Step size region by region.
[u/mrichter/AliRoot.git] / JETAN / AliJetEventParticles.h
1 #ifndef ALIJETEVENTPARTICLES_H
2 #define ALIJETEVENTPARTICLES_H
3
4 /* $Id$ */
5
6 ///////////////////////////////////////////////////////////////////
7 //
8 // class AliJetEventParticles
9 //
10 // loizides@ikf.uni-frankfurt.de 
11 //
12 ///////////////////////////////////////////////////////////////////
13
14 #include <TObject.h>
15 #include <TString.h>
16
17 class TParticle;
18 class TClonesArray;
19 class AliJetParticle;
20
21 class AliJetEventParticles: public TObject
22 {
23   public:
24   AliJetEventParticles(Int_t size=1000);
25   AliJetEventParticles(const AliJetEventParticles& source);
26   virtual ~AliJetEventParticles();
27     
28   void SetVertex(Float_t v[3]){fVertexX=v[0];fVertexY=v[1];fVertexZ=v[2];}
29   void SetVertex(Float_t v1,Float_t v2, Float_t v3){fVertexX=v1;fVertexY=v2;fVertexZ=v3;}
30   void SetHeader(TString& s){fHeader=s;}
31   void Reset(Int_t size=-1); //deletes all entries
32   void Clear(Option_t *option="") {TObject::Clear(option);Reset();}
33   
34   //adds particle to the event
35   void AddParticle(AliJetParticle* p);  
36   void AddParticle(const AliJetParticle* p); 
37   void AddParticle(const TParticle* part,Int_t idx=-1, Int_t l=0, Int_t ncl=0); 
38   void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx=-1, Int_t l=0, Int_t ncl=0);
39   void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l, Int_t ncl,
40                    Float_t pt, Float_t phi, Float_t eta);
41
42   void AddSignal(const AliJetEventParticles& source);
43
44   const AliJetParticle* GetParticle(Int_t n) const //gets particle without boundary check
45     {return (const AliJetParticle*)fParticles->At(n);} 
46   const AliJetParticle* GetParticleSafely(Int_t n); 
47   Int_t GetNParticles()              const {return fNParticles;}
48   const TClonesArray* GetParticles() const {return fParticles;}
49   Float_t GetVertexX()               const {return fVertexX;}  
50   Float_t GetVertexY()               const {return fVertexY;}  
51   Float_t GetVertexZ()               const {return fVertexZ;}  
52
53   Int_t    Trials()         const {return fTrials;}
54   Int_t    NTriggerJets()   const {return fNJets;}
55   Int_t    NUQTriggerJets() const {return fNUQJets;}
56   void     TriggerJet(Int_t i, Float_t p[4]) const;
57   void     UQJet(Int_t i, Float_t p[4])      const;
58   void     TriggerJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E)          const;
59   void     UQJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E)               const;
60   void     Hard(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E, Float_t &type) const;
61   void     Hard(Int_t i, Float_t p[4], Float_t &type) const;
62   Double_t GetXJet() const {return fXJet;}
63   Double_t GetYJet() const {return fYJet;}    
64   void     GetZQuench(Double_t z[4]) const;
65   TString  getHeader() const {return fHeader;}
66
67   Float_t  GetImpact() const {return fImpact;}
68   Int_t    GetNhard()  const {return fNHardScatters;}
69   Int_t    GetNpart()  const {return fNwNwColl;}
70
71   void     SetXYJet(Double_t x, Double_t y); 
72   void     SetZQuench(Double_t z[4]);
73   void     SetTrials(Int_t trials) {fTrials = trials;}
74   void     AddJet(Float_t px, Float_t py, Float_t pz, Float_t e);
75   void     AddUQJet(Float_t px, Float_t py, Float_t pz, Float_t e);
76   void     AddJet(Float_t p[4]);
77   void     AddUQJet(Float_t p[4]);
78   void     AddHard(Int_t i,Float_t px, Float_t py, Float_t pz, Float_t e, Float_t type);
79
80   void     SetImpact(Float_t b){fImpact=b;}
81   void     SetNhard(Int_t n){fNHardScatters=n;}
82   void     SetNpart(Int_t n){fNwNwColl=n;}
83
84   void     Print(Option_t *t="") const;
85
86   protected:
87   TString fHeader;          //   event description
88   Int_t fNParticles;        //   number of particles read
89   TClonesArray *fParticles; //-> particles in event
90
91   Float_t fVertexX;         // vertex x
92   Float_t fVertexY;         // vertex y
93   Float_t fVertexZ;         // vertex z
94
95   Int_t    fTrials;         // Number of trials to fulfill trigger condition
96   Int_t    fNJets;          // Number of triggered jets
97   Int_t    fNUQJets;        // Number of unquenched
98   Double_t fXJet;           // Jet production point (x)
99   Double_t fYJet;           // Jet production point (y)
100   Float_t  fJets[4][10];    // Trigger jets
101   Float_t  fUQJets[4][10];  // Unquenched trigger jets
102   Float_t  fHard[5][2];     // Hard partons
103   Double_t fZquench[4];     // Quenching fraction
104
105   Float_t fImpact;          // impact parameter
106   Int_t   fNHardScatters;   // number of hard scatterings
107   Int_t   fNwNwColl;        // number of Nwounded-Nwounded collisions
108
109   ClassDef(AliJetEventParticles,5) //class AliJetEventParticles
110 };
111 #endif