Changes for alien analysis.
[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 <TClonesArray.h>
16 #include <TObjString.h>
17 #include <TString.h>
18 class TParticle;
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   
33   //adds particle to the event
34   void AddParticle(AliJetParticle* p);  
35   void AddParticle(const AliJetParticle* p); 
36   void AddParticle(const TParticle* part,Int_t idx=-1, Int_t l=0); 
37   void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx=-1, Int_t l=0);
38   void AddParticle(Float_t px, Float_t py, Float_t pz, Float_t etot, Int_t idx, Int_t l,
39                    Float_t pt, Float_t phi, Float_t eta);
40
41   const AliJetParticle* GetParticle(Int_t n) //gets particle without boundary check
42     {return (const AliJetParticle*)fParticles->At(n);} 
43   const AliJetParticle* GetParticleSafely(Int_t n); 
44   Int_t GetNParticles()              const {return fNParticles;}
45   const TClonesArray* GetParticles() const {return fParticles;}
46   Float_t GetVertexX()               const {return fVertexX;}  
47   Float_t GetVertexY()               const {return fVertexY;}  
48   Float_t GetVertexZ()               const {return fVertexZ;}  
49
50   Int_t    Trials()         const {return fTrials;}
51   Int_t    NTriggerJets()   const {return fNJets;}
52   Int_t    NUQTriggerJets() const {return fNUQJets;}
53   void     TriggerJet(Int_t i, Float_t p[4]) const;
54   void     UQJet(Int_t i, Float_t p[4])      const;
55   void     TriggerJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E) const;
56   void     UQJet(Int_t i, Float_t &p1, Float_t &p2, Float_t &p3, Float_t &E)      const;
57   Double_t GetXJet() const {return fXJet;}
58   Double_t GetYJet() const {return fYJet;}    
59   void     GetZQuench(Double_t z[4]) const;
60   TString  getHeader() const {return fHeader;}
61
62   void     SetXYJet(Double_t x, Double_t y); 
63   void     SetZQuench(Double_t z[4]);
64   void     SetTrials(Int_t trials) {fTrials = trials;}
65   void     AddJet(Float_t px, Float_t py, Float_t pz, Float_t e);
66   void     AddUQJet(Float_t px, Float_t py, Float_t pz, Float_t e);
67   void     AddJet(Float_t p[4]);
68   void     AddUQJet(Float_t p[4]);
69
70   void Print(Option_t *t="") const;
71
72   protected:
73   TString fHeader;          //   event description
74   Int_t fNParticles;        //   number of particles read
75   TClonesArray *fParticles; //-> particles in event
76
77   Float_t fVertexX;         // vertex x
78   Float_t fVertexY;         // vertex y
79   Float_t fVertexZ;         // vertex z
80
81   Int_t    fTrials;         // Number of trials to fulfill trigger condition
82   Int_t    fNJets;          // Number of triggered jets
83   Int_t    fNUQJets;        // Number of unquenched
84   Double_t fXJet;           // Jet production point (x)
85   Double_t fYJet;           // Jet production point (y)
86   Float_t  fJets[4][10];    // Trigger jets
87   Float_t  fUQJets[4][10];  // Unquenched trigger jets
88   Double_t fZquench[4];     // Quenching fraction
89
90   ClassDef(AliJetEventParticles,2) //class AliJetEventParticles
91 };
92 #endif