ROOT logo
#ifndef ALIMCINFO_H
#define ALIMCINFO_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */



//////////////////////////////////////////////////////////////////////////////
//                          Class AliGenInfo                               //
//   collect together MC info for comparison purposes - effieciency studies and so on//                                                                 //
//   marian.ivanov@cern.ch                                                  //
//////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////
//
// Start of implementation of the class AliTPCdigitRow
//
////////////////////////////////////////////////////////////////////////

#include <TParticle.h>
#include "AliTrackReference.h"

class TFile;
class AliRunLoader;
class AliStack;


class AliTPCdigitRow: public TObject {
public:
  AliTPCdigitRow();
  virtual ~AliTPCdigitRow(){;}
  void SetRow(Int_t row);
  Bool_t TestRow(Int_t row) const ;
  AliTPCdigitRow & operator=(const AliTPCdigitRow &digOld);
  Int_t RowsOn(Int_t upto=8*32) const;
  Int_t Last() const;
  Int_t First() const ;
  void Reset();

private:
  UChar_t fDig[32];   // bitmask of the digits presence
  ClassDef(AliTPCdigitRow,1)  // container for digit pattern
};


////////////////////////////////////////////////////////////////////////
//
// Start of implementation of the class AliMCInfo
//
////////////////////////////////////////////////////////////////////////

class AliMCInfo: public TObject {
  friend class  AliGenInfoMaker;
  friend class  AliRecInfoMaker;
  friend class  AliESDRecInfo;
public:
  AliMCInfo();
  ~AliMCInfo();   
  AliMCInfo(const AliMCInfo& info);
  AliMCInfo& operator=(const AliMCInfo& info);
  void Update(TParticle * part, TClonesArray * arrayTr, Double_t pvertex[4], Int_t label);
  void Clear(Option_t* = "");
  //
  void Update();
  Int_t     GetEventNr() const   {return fEventNr;}
  const AliTrackReference&  GetTrackRef() const {return fTrackRef;}
  const AliTrackReference&  GetTrackRefOut() const {return fTrackRefOut;}
  const AliTrackReference&  GetTRdecay() const {return fTRdecay;} 
  TParticle& GetParticle()   {return fParticle;}
  //
  Int_t     GetPrimPart() const  {return fPrimPart;}
  Float_t   GetMass()   const    {return fMass;}                  
  Float_t   GetCharge() const    {return fCharge;}
  Int_t     GetLabel()  const    {return fLabel;}

  Int_t     GetMCtracks() const  {return fMCtracks;}
  Int_t     GetPdg()      const  {return fPdg;}
  const Float_t*   GetDecayCoord() const {return fDecayCoord;}
  const Double_t*  GetVDist()      const {return fVDist;}

  Bool_t   IsTPCdecay() const   {return fTPCdecay;}

  Int_t    GetRowsWithDigitsInn() const {return fRowsWithDigitsInn;}
  Int_t    GetRowsWithDigits() const  {return fRowsWithDigits;}
  Int_t    GetRowsTrackLength() const {return fRowsTrackLength;}
  Float_t GetPrim() const { return fPrim;}
  
  AliTPCdigitRow & GetTPCRow() {return fTPCRow;}
  Int_t GetNTPCRef() const {return fNTPCRef;}      
  Int_t GetNITSRef() const {return fNITSRef;}
  Int_t GetNTRDRef() const {return fNTRDRef;}
  Int_t GetNTOFRef() const {return fNTOFRef;}
  const TClonesArray *GetTPCReferences() const { return fTPCReferences;}  
  const TClonesArray * GetTRDReferences() const { return fTRDReferences;}  
  const TClonesArray * GetITSReferences() const { return fITSReferences;}  
  const TClonesArray * GetTOFReferences() const { return fTOFReferences;}  
  void CalcTPCrows(TClonesArray *arrayTR);
private:
  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;                 // charge of the particle
  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
  //
  // TPC row information using digits
  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
  //
  // TPC track refernce information
  Float_t fTPCtrackLength;           // distance between first and last track reference
  //
  Float_t fPrim;                     // theoretical dedx in tpc according particle momenta and mass
  AliTPCdigitRow 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
  //
  Int_t fNTPCRefOut;                    // tpc references counter - out
  Int_t fNITSRefOut;                    // ITS references counter - out
  Int_t fNTRDRefOut;                    // TRD references counter - out
  Int_t fNTOFRefOut;                    // TOF references counter - out

  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,2);  // container for 
};



#endif
 AliMCInfo.h:1
 AliMCInfo.h:2
 AliMCInfo.h:3
 AliMCInfo.h:4
 AliMCInfo.h:5
 AliMCInfo.h:6
 AliMCInfo.h:7
 AliMCInfo.h:8
 AliMCInfo.h:9
 AliMCInfo.h:10
 AliMCInfo.h:11
 AliMCInfo.h:12
 AliMCInfo.h:13
 AliMCInfo.h:14
 AliMCInfo.h:15
 AliMCInfo.h:16
 AliMCInfo.h:17
 AliMCInfo.h:18
 AliMCInfo.h:19
 AliMCInfo.h:20
 AliMCInfo.h:21
 AliMCInfo.h:22
 AliMCInfo.h:23
 AliMCInfo.h:24
 AliMCInfo.h:25
 AliMCInfo.h:26
 AliMCInfo.h:27
 AliMCInfo.h:28
 AliMCInfo.h:29
 AliMCInfo.h:30
 AliMCInfo.h:31
 AliMCInfo.h:32
 AliMCInfo.h:33
 AliMCInfo.h:34
 AliMCInfo.h:35
 AliMCInfo.h:36
 AliMCInfo.h:37
 AliMCInfo.h:38
 AliMCInfo.h:39
 AliMCInfo.h:40
 AliMCInfo.h:41
 AliMCInfo.h:42
 AliMCInfo.h:43
 AliMCInfo.h:44
 AliMCInfo.h:45
 AliMCInfo.h:46
 AliMCInfo.h:47
 AliMCInfo.h:48
 AliMCInfo.h:49
 AliMCInfo.h:50
 AliMCInfo.h:51
 AliMCInfo.h:52
 AliMCInfo.h:53
 AliMCInfo.h:54
 AliMCInfo.h:55
 AliMCInfo.h:56
 AliMCInfo.h:57
 AliMCInfo.h:58
 AliMCInfo.h:59
 AliMCInfo.h:60
 AliMCInfo.h:61
 AliMCInfo.h:62
 AliMCInfo.h:63
 AliMCInfo.h:64
 AliMCInfo.h:65
 AliMCInfo.h:66
 AliMCInfo.h:67
 AliMCInfo.h:68
 AliMCInfo.h:69
 AliMCInfo.h:70
 AliMCInfo.h:71
 AliMCInfo.h:72
 AliMCInfo.h:73
 AliMCInfo.h:74
 AliMCInfo.h:75
 AliMCInfo.h:76
 AliMCInfo.h:77
 AliMCInfo.h:78
 AliMCInfo.h:79
 AliMCInfo.h:80
 AliMCInfo.h:81
 AliMCInfo.h:82
 AliMCInfo.h:83
 AliMCInfo.h:84
 AliMCInfo.h:85
 AliMCInfo.h:86
 AliMCInfo.h:87
 AliMCInfo.h:88
 AliMCInfo.h:89
 AliMCInfo.h:90
 AliMCInfo.h:91
 AliMCInfo.h:92
 AliMCInfo.h:93
 AliMCInfo.h:94
 AliMCInfo.h:95
 AliMCInfo.h:96
 AliMCInfo.h:97
 AliMCInfo.h:98
 AliMCInfo.h:99
 AliMCInfo.h:100
 AliMCInfo.h:101
 AliMCInfo.h:102
 AliMCInfo.h:103
 AliMCInfo.h:104
 AliMCInfo.h:105
 AliMCInfo.h:106
 AliMCInfo.h:107
 AliMCInfo.h:108
 AliMCInfo.h:109
 AliMCInfo.h:110
 AliMCInfo.h:111
 AliMCInfo.h:112
 AliMCInfo.h:113
 AliMCInfo.h:114
 AliMCInfo.h:115
 AliMCInfo.h:116
 AliMCInfo.h:117
 AliMCInfo.h:118
 AliMCInfo.h:119
 AliMCInfo.h:120
 AliMCInfo.h:121
 AliMCInfo.h:122
 AliMCInfo.h:123
 AliMCInfo.h:124
 AliMCInfo.h:125
 AliMCInfo.h:126
 AliMCInfo.h:127
 AliMCInfo.h:128
 AliMCInfo.h:129
 AliMCInfo.h:130
 AliMCInfo.h:131
 AliMCInfo.h:132
 AliMCInfo.h:133
 AliMCInfo.h:134
 AliMCInfo.h:135
 AliMCInfo.h:136
 AliMCInfo.h:137
 AliMCInfo.h:138
 AliMCInfo.h:139
 AliMCInfo.h:140
 AliMCInfo.h:141
 AliMCInfo.h:142
 AliMCInfo.h:143
 AliMCInfo.h:144
 AliMCInfo.h:145
 AliMCInfo.h:146
 AliMCInfo.h:147
 AliMCInfo.h:148