//////////////////////////////////////////////////////////////////////// // // Start of implementation of the class digitRow // //////////////////////////////////////////////////////////////////////// const Int_t kgRowBytes = 32; class digitRow: public TObject { public: digitRow(); virtual ~digitRow(){;} void SetRow(Int_t row); Bool_t TestRow(Int_t row); digitRow & operator=(const digitRow &digOld); Int_t RowsOn(Int_t upto=8*kgRowBytes); Int_t Last(); Int_t First(); void Reset(); //private: UChar_t fDig[kgRowBytes]; ClassDef(digitRow,1) // container for digit pattern }; ClassImp(digitRow) //////////////////////////////////////////////////////////////////////// // // Start of implementation of the class AliMCInfo // //////////////////////////////////////////////////////////////////////// class AliMCInfo: public TObject { public: AliMCInfo(); ~AliMCInfo(); void Update(); AliTrackReference fTrackRef; // track reference saved in the output tree AliTrackReference fTrackRefOut; // decay track reference saved in the output tree AliTrackReference fTRdecay; // track reference at decay point // Int_t fPrimPart; // index of primary particle in TreeH TParticle fParticle; // generated particle Float_t fMass; // mass of the particle Float_t fCharge; // Int_t fLabel; // track label Int_t fEventNr; // event number Int_t fMCtracks; // indication of how many times the track is retuturned back Int_t fPdg; //pdg code Float_t fDecayCoord[3]; // position of particle decay Double_t fVDist[4]; //distance of the particle vertex from primary vertex Bool_t fTPCdecay; //indicates decay in TPC Int_t fRowsWithDigitsInn; // number of rows with digits in the inner sectors Int_t fRowsWithDigits; // number of rows with digits in the outer sectors Int_t fRowsTrackLength; // last - first row with digit Float_t fPrim; // theoretical dedx in tpc according particle momenta and mass digitRow fTPCRow; // information about digits row pattern Int_t fNTPCRef; // tpc references counter Int_t fNITSRef; // ITS references counter Int_t fNTRDRef; // TRD references counter Int_t fNTOFRef; // TOF references counter TClonesArray * fTPCReferences; //containner with all track references -in the TPC TClonesArray * fITSReferences; //container with ITS references TClonesArray * fTRDReferences; //container with TRD references TClonesArray * fTOFReferences; //container with TRD references // ClassDef(AliMCInfo,3) // container for }; ClassImp(AliMCInfo) class AliGenV0Info: public TObject { public: AliMCInfo fMCd; //info about daughter particle - second particle for V0 AliMCInfo fMCm; //info about mother particle - first particle for V0 TParticle fMotherP; //particle info about mother particle void Update(Float_t vertex[3]); // put some derived info to special field Double_t fMCDist1; //info about closest distance according closest MC - linear DCA Double_t fMCDist2; //info about closest distance parabolic DCA // Double_t fMCPdr[3]; //momentum at vertex daughter - according approx at DCA Double_t fMCPd[4]; //exact momentum from MC info Double_t fMCX[3]; //exact position of the vertex Double_t fMCXr[3]; //rec. position according helix // Double_t fMCPm[3]; //momentum at the vertex mother Double_t fMCAngle[3]; //three angels Double_t fMCRr; // rec position of the vertex Double_t fMCR; //exact r position of the vertex Int_t fPdg[2]; //pdg code of mother and daugter particles Int_t fLab[2]; //MC label of the partecle // Double_t fInvMass; //reconstructed invariant mass - Float_t fPointAngleFi; //point angle fi Float_t fPointAngleTh; //point angle theta Float_t fPointAngle; //point angle full // ClassDef(AliGenV0Info,1) // container for }; ClassImp(AliGenV0Info) class AliGenKinkInfo: public TObject { public: AliMCInfo fMCd; //info about daughter particle - second particle for V0 AliMCInfo fMCm; //info about mother particle - first particle for V0 void Update(); // put some derived info to special field Float_t GetQt(); // Double_t fMCDist1; //info about closest distance according closest MC - linear DCA Double_t fMCDist2; //info about closest distance parabolic DCA // Double_t fMCPdr[3]; //momentum at vertex daughter - according approx at DCA Double_t fMCPd[4]; //exact momentum from MC info Double_t fMCX[3]; //exact position of the vertex Double_t fMCXr[3]; //rec. position according helix // Double_t fMCPm[3]; //momentum at the vertex mother Double_t fMCAngle[3]; //three angels Double_t fMCRr; // rec position of the vertex Double_t fMCR; //exact r position of the vertex Int_t fPdg[2]; //pdg code of mother and daugter particles Int_t fLab[2]; //MC label of the partecle ClassDef(AliGenKinkInfo,1) // container for }; ClassImp(AliGenKinkInfo) //////////////////////////////////////////////////////////////////////// // // Start of implementation of the class AliGenInfoMaker // //////////////////////////////////////////////////////////////////////// class AliGenInfoMaker { public: AliGenInfoMaker(); AliGenInfoMaker(const char * fnGalice, const char* fnRes ="genTracks.root", Int_t nEvents=1, Int_t firstEvent=0); virtual ~AliGenInfoMaker(); void Reset(); Int_t Exec(); Int_t Exec(Int_t nEvents, Int_t firstEventNr); void CreateTreeGenTracks(); void CloseOutputFile(); Int_t TreeKLoop(); Int_t TreeTRLoop(); Int_t TreeDLoop(); Int_t BuildKinkInfo(); // build information about MC kinks Int_t BuildV0Info(); // build information about MC kinks Int_t BuildHitLines(); // build information about MC kinks //void FillInfo(Int_t iParticle); void SetFirstEventNr(Int_t i) {fFirstEventNr = i;} void SetNEvents(Int_t i) {fNEvents = i;} void SetDebug(Int_t level) {fDebug = level;} Int_t SetIO(Int_t eventNr); Int_t CloseIOEvent(); Int_t CloseIO(); Int_t SetIO(); Float_t TR2LocalX(AliTrackReference *trackRef, AliTPCParam *paramTPC); AliMCInfo * GetInfo(UInt_t i){return (i