3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //////////////////////////////////////////////////////////////////////////////
10 // collect together MC info for comparison purposes - effieciency studies and so on// //
11 // marian.ivanov@cern.ch //
12 //////////////////////////////////////////////////////////////////////////////
16 ////////////////////////////////////////////////////////////////////////
18 // Start of implementation of the class AliTPCdigitRow
20 ////////////////////////////////////////////////////////////////////////
22 #include <TParticle.h>
23 #include "AliTrackReference.h"
30 const Int_t kgRowBytes = 32;
32 class AliTPCdigitRow: public TObject {
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;
45 UChar_t fDig[kgRowBytes];
46 ClassDef(AliTPCdigitRow,1) // container for digit pattern
50 ////////////////////////////////////////////////////////////////////////
52 // Start of implementation of the class AliMCInfo
54 ////////////////////////////////////////////////////////////////////////
56 class AliMCInfo: public TObject {
57 friend class AliGenInfoMaker;
58 friend class AliRecInfoMaker;
59 friend class AliESDRecInfo;
63 AliMCInfo(const AliMCInfo& info);
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);
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;}
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;}
82 Bool_t IsTPCdecay() const {return fTPCdecay;}
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;}
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;}
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
103 Int_t fPrimPart; // index of primary particle in TreeH
104 TParticle fParticle; // generated particle
105 Float_t fMass; // mass of the particle
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
128 ClassDef(AliMCInfo,1); // container for
133 class AliGenV0Info: public TObject {
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;
147 // Double_t fMCPm[3];
148 // Double_t fMCAngle[3];
154 // Double_t fInvMass;
155 // Float_t fPointAngleFi;
156 // Float_t fPointAngleTh;
157 // Float_t fPointAngle;
159 void SetInfoP(AliMCInfo &plus) {fMCd=plus;}
160 void SetInfoM(AliMCInfo &minus){fMCm=minus;}
161 void SetMother(TParticle&mother){fMotherP=mother;}
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
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
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
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
186 ClassDef(AliGenV0Info,1) // container for
191 class AliGenKinkInfo: public TObject {
193 AliGenKinkInfo(); //default cosntructor
194 void Update(); // put some derived info to special field
196 AliMCInfo & GetPlus() {return fMCd;}
197 AliMCInfo & GetMinus() {return fMCm;}
198 void SetInfoDaughter(AliMCInfo &daughter) {fMCd=daughter;}
199 void SetInfoMother(AliMCInfo &mother){fMCm=mother;}
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
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
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