]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliGenInfo.h
Modifications in DoClust (Ajay)
[u/mrichter/AliRoot.git] / PWG1 / AliGenInfo.h
1 #ifndef ALIGENINFO_H
2 #define ALIGENINFO_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6
7
8 //////////////////////////////////////////////////////////////////////////////
9 //                          Class AliGenInfo                               //
10 //   collect together MC info for comparison purposes - effieciency studies and so on//                                                                 //
11 //   marian.ivanov@cern.ch                                                  //
12 //////////////////////////////////////////////////////////////////////////////
13
14
15
16 ////////////////////////////////////////////////////////////////////////
17 //
18 // Start of implementation of the class AliTPCdigitRow
19 //
20 ////////////////////////////////////////////////////////////////////////
21
22 #include <TParticle.h>
23 #include "AliTrackReference.h"
24
25 class TFile;
26 class AliRunLoader;
27 class AliStack;
28 class AliTPCParam;
29
30 const Int_t kgRowBytes = 32;
31
32 class AliTPCdigitRow: public TObject {
33 public:
34   AliTPCdigitRow();
35   virtual ~AliTPCdigitRow(){;}
36   void SetRow(Int_t row);
37   Bool_t TestRow(Int_t row) const ;
38   AliTPCdigitRow & operator=(const AliTPCdigitRow &digOld);
39   Int_t RowsOn(Int_t upto=8*kgRowBytes) const;
40   Int_t Last() const;
41   Int_t First() const ;
42   void Reset();
43
44 private:
45   UChar_t fDig[kgRowBytes];
46   ClassDef(AliTPCdigitRow,1)  // container for digit pattern
47 };
48
49
50 ////////////////////////////////////////////////////////////////////////
51 //
52 // Start of implementation of the class AliMCInfo
53 //
54 ////////////////////////////////////////////////////////////////////////
55
56 class AliMCInfo: public TObject {
57   friend class  AliGenInfoMaker;
58   friend class  AliRecInfoMaker;
59   friend class  AliESDRecInfo;
60 public:
61   AliMCInfo();
62   ~AliMCInfo();   
63   AliMCInfo(const AliMCInfo& info);
64   void Update();
65   Int_t     GetEventNr() const   {return fEventNr;}
66   const AliTrackReference&  GetTrackRef() const {return fTrackRef;}
67   const AliTrackReference&  GetTrackRefOut() const {return fTrackRefOut;}
68   const AliTrackReference&  GetTRdecay() const {return fTRdecay;} 
69   TParticle& GetParticle()   {return fParticle;}
70   Float_t TPCBetheBloch(Float_t bg);
71   //
72   Int_t     GetPrimPart() const  {return fPrimPart;}
73   Float_t   GetMass()   const    {return fMass;}                  
74   Float_t   GetCharge() const    {return fCharge;}
75   Int_t     GetLabel()  const    {return fLabel;}
76
77   Int_t     GetMCtracks() const  {return fMCtracks;}
78   Int_t     GetPdg()      const  {return fPdg;}
79   const Float_t*   GetDecayCoord() const {return fDecayCoord;}
80   const Double_t*  GetVDist()      const {return fVDist;}
81
82   Bool_t   IsTPCdecay() const   {return fTPCdecay;}
83
84   Int_t    GetRowsWithDigitsInn() const {return fRowsWithDigitsInn;}
85   Int_t    GetRowsWithDigits() const  {return fRowsWithDigits;}
86   Int_t    GetRowsTrackLength() const {return fRowsTrackLength;}
87   Float_t GetPrim() const { return fPrim;}
88   
89   AliTPCdigitRow & GetTPCRow() {return fTPCRow;}
90   Int_t GetNTPCRef() const {return fNTPCRef;}      
91   Int_t GetNITSRef() const {return fNITSRef;}
92   Int_t GetNTRDRef() const {return fNTRDRef;}
93   Int_t GetNTOFRef() const {return fNTOFRef;}
94   const TClonesArray *GetTPCReferences() const { return fTPCReferences;}  
95   const TClonesArray * GetTRDReferences() const { return fTRDReferences;}  
96   const TClonesArray * GetITSReferences() const { return fITSReferences;}  
97   const TClonesArray * GetTOFReferences() const { return fTOFReferences;}  
98 private:
99   AliTrackReference  fTrackRef;      // track reference saved in the output tree
100   AliTrackReference  fTrackRefOut;   // decay track reference saved in the output tree
101   AliTrackReference  fTRdecay;       // track reference at decay point
102   //
103   Int_t     fPrimPart;               // index of primary particle in TreeH
104   TParticle fParticle;               // generated particle 
105   Float_t   fMass;                   // mass of the particle
106   Float_t   fCharge;                 //
107   Int_t     fLabel;                  // track label
108   Int_t     fEventNr;                // event number
109   Int_t     fMCtracks;               // indication of how many times the track is retuturned back
110   Int_t fPdg;                        //pdg code
111   Float_t fDecayCoord[3];            // position of particle decay
112   Double_t fVDist[4];                //distance of the particle vertex from primary vertex
113   Bool_t fTPCdecay;                  //indicates decay in TPC
114   Int_t fRowsWithDigitsInn;          // number of rows with digits in the inner sectors
115   Int_t fRowsWithDigits;             // number of rows with digits in the outer sectors
116   Int_t fRowsTrackLength;            // last - first row with digit
117   Float_t fPrim;                     // theoretical dedx in tpc according particle momenta and mass
118   AliTPCdigitRow fTPCRow;                  // information about digits row pattern
119   Int_t fNTPCRef;                    // tpc references counter
120   Int_t fNITSRef;                    // ITS references counter
121   Int_t fNTRDRef;                    // TRD references counter
122   Int_t fNTOFRef;                    // TOF references counter
123   TClonesArray * fTPCReferences;     //containner with all track references -in the TPC
124   TClonesArray * fITSReferences;     //container with ITS references
125   TClonesArray * fTRDReferences;     //container with TRD references  
126   TClonesArray * fTOFReferences;     //container with TRD references  
127   //
128   ClassDef(AliMCInfo,1);  // container for 
129 };
130
131
132
133 class AliGenV0Info: public TObject {
134 public:
135   AliGenV0Info();       //
136   void Update(Float_t vertex[3]);       
137   AliMCInfo &  GetPlus()      {return fMCd;}
138   AliMCInfo &  GetMinus()     {return fMCm;}
139   TParticle &  GetMopther()   {return fMotherP;}
140   Double_t    GetMCDist1() const { return fMCDist1;}
141   Double_t    GetMCDist2() const {return fMCDist2;}  
142   const Double_t*  GetMCPdr() const {return fMCPdr;}
143   const Double_t*  GetMCPd()  const {return fMCPd;}
144   const Double_t*  GetMCX()  const {return fMCX;}
145   //  const Double_t    fMCXr;
146   //
147 //   Double_t     fMCPm[3];    
148 //   Double_t     fMCAngle[3]; 
149 //   Double_t     fMCRr;       
150 //   Double_t     fMCR;       
151 //   Int_t        fPdg[2];   
152 //   Int_t        fLab[2];   
153 //   //
154 //   Double_t       fInvMass;  
155 //   Float_t        fPointAngleFi;
156 //   Float_t        fPointAngleTh;
157 //   Float_t        fPointAngle;  
158
159   void SetInfoP(AliMCInfo &plus) {fMCd=plus;}
160   void SetInfoM(AliMCInfo &minus){fMCm=minus;}
161   void SetMother(TParticle&mother){fMotherP=mother;}
162 private:
163   AliMCInfo   fMCd;       //info about daughter particle - second particle for V0
164   AliMCInfo   fMCm;       //info about mother particle   - first particle for V0
165   TParticle   fMotherP;   //particle info about mother particle
166   Double_t    fMCDist1;    //info about closest distance according closest MC - linear DCA
167   Double_t    fMCDist2;    //info about closest distance parabolic DCA
168   //
169   Double_t    fMCPdr[3];    //momentum at vertex daughter  - according approx at DCA
170   Double_t    fMCPd[4];     //exact momentum from MC info
171   Double_t    fMCX[3];      //exact position of the vertex
172   Double_t    fMCXr[3];     //rec. position according helix
173   //
174   Double_t     fMCPm[3];    //momentum at the vertex mother
175   Double_t     fMCAngle[3]; //three angels
176   Double_t     fMCRr;       // rec position of the vertex 
177   Double_t     fMCR;        //exact r position of the vertex
178   Int_t        fPdg[2];   //pdg code of mother and daugter particles
179   Int_t        fLab[2];   //MC label of the partecle  
180   //
181   Double_t       fInvMass;  //reconstructed invariant mass -
182   Float_t        fPointAngleFi; //point angle fi
183   Float_t        fPointAngleTh; //point angle theta
184   Float_t        fPointAngle;   //point angle full
185   //
186   ClassDef(AliGenV0Info,1)  // container for  
187 };
188
189
190
191 class AliGenKinkInfo: public TObject {
192 public:
193   AliGenKinkInfo();          //default cosntructor
194   void    Update();          // put some derived info to special field 
195   Float_t GetQt();           //
196   AliMCInfo &  GetPlus()      {return fMCd;}
197   AliMCInfo &  GetMinus()     {return fMCm;}
198   void SetInfoDaughter(AliMCInfo &daughter) {fMCd=daughter;}
199   void SetInfoMother(AliMCInfo &mother){fMCm=mother;}
200 private:
201   AliMCInfo   fMCd;          //info about daughter particle - second particle for V0
202   AliMCInfo   fMCm;          //info about mother particle   - first particle for V0
203   Double_t    fMCDist1;      //info about closest distance according closest MC - linear DCA
204   Double_t    fMCDist2;      //info about closest distance parabolic DCA
205   //
206   Double_t     fMCPdr[3];    //momentum at vertex daughter  - according approx at DCA
207   Double_t     fMCPd[4];     //exact momentum from MC info
208   Double_t     fMCX[3];      //exact position of the vertex
209   Double_t     fMCXr[3];     //rec. position according helix
210   //
211   Double_t     fMCPm[3];     //momentum at the vertex mother
212   Double_t     fMCAngle[3];  //three angels
213   Double_t     fMCRr;        // rec position of the vertex 
214   Double_t     fMCR;         //exact r position of the vertex
215   Int_t        fPdg[2];      //pdg code of mother and daugter particles
216   Int_t        fLab[2];      //MC label of the partecle
217   ClassDef(AliGenKinkInfo,1) // container for  
218 };
219
220 #endif