Updates.
[u/mrichter/AliRoot.git] / EVGEN / AliGenReaderEMD.h
index 68152dc..0b6b5c3 100644 (file)
@@ -4,7 +4,7 @@
  * See cxx source for full Copyright notice                               */
 
 // Class to read events from external (TNtupla) file
-// Events -> neutron removal by EM dissociation of Pb nuclei
+// Events -> EM dissociation of Pb nuclei
 // Data from RELDIS code (by I. Pshenichov)
 //
 #include "AliGenReader.h"
@@ -14,6 +14,8 @@
 class AliGenReaderEMD : public AliGenReader
 {
  public:
+    enum TrackedPc{kAll=0, kOnlyNucleons=1, kNotNucleons=2};
+    
     AliGenReaderEMD();
     
     AliGenReaderEMD(const AliGenReaderEMD &reader);
@@ -21,13 +23,14 @@ class AliGenReaderEMD : public AliGenReader
     AliGenReaderEMD & operator=(const AliGenReaderEMD & rhs);
     // Initialise 
     virtual void Init();
-    // Read
+    // Reader
     virtual Int_t NextEvent();
     virtual TParticle*  NextParticle();
     virtual void RewindEvent(){;}
-    // Setter
-    void SetIPSide(Int_t iside) {fIPSide = iside;}
-    void SetPcToTrack(Int_t ipart) {fPcToTrack = ipart;}
+    // Setters
+    void TrackNotNucleons()  {fPcToTrack = kNotNucleons;}
+    void TrackOnlyNucleons() {fPcToTrack = kOnlyNucleons;}
+    void TrackAllParticles() {fPcToTrack = kAll;}
     void SetStartEvent(Int_t nev) {fStartEvent = nev;}
     
  protected:
@@ -36,39 +39,111 @@ class AliGenReaderEMD : public AliGenReader
     Int_t           fNparticle;        // number of particles
     TTree           *fTreeNtuple;      // pointer to the TTree
     //
-    Int_t          fIPSide;            // ZDC arm relative to IP
     Int_t          fPcToTrack;         // flag for particles to be tracked
+    Int_t           fOffset;           // Needed to correctly read next particle
     //
     // --- Declaration of leaves types
     // **** neutrons
     Int_t           fNnAside;          // No. of neutrons emitted on left side            
-    Float_t         fEnAside;          // Forward energy Aside side
-    Float_t        fPxnAside[70];      // momentum x component - left side
-    Float_t        fPynAside[70];      // momentum y component - left side     
-    Float_t        fPznAside[70];      // momentum z component - left side   
+    Float_t         fEnAside;          // Forward energy A side
+    Int_t           fnPDGCode;         // PDG code
+    Float_t        fPxnAside[70];      // momentum x component A side
+    Float_t        fPynAside[70];      // momentum y component A side    
+    Float_t        fPznAside[70];      // momentum z component A side  
     //  
     Int_t           fNnCside;          // No. of neutrons emitted on right side            
-    Float_t         fEnCside;          // Forward energy Cside side
-    Float_t        fPxnCside[70];      // momentum x component - right side
-    Float_t        fPynCside[70];      // momentum y component - right side     
-    Float_t        fPznCside[70];      // momentum z component - right side     
+    Float_t         fEnCside;          // Forward energy C side
+    Float_t        fPxnCside[70];      // momentum x component C side
+    Float_t        fPynCside[70];      // momentum y component C side    
+    Float_t        fPznCside[70];      // momentum z component C side    
     //
     // **** protons
     Int_t           fNpAside;          // No. of protons emitted on left side            
-    Float_t         fEtapAside;                // Forward energy Aside side
-    Float_t        fPxpAside[70];      // momentum x component - left side
-    Float_t        fPypAside[70];      // momentum y component - left side     
-    Float_t        fPzpAside[70];      // momentum z component - left side   
+    Float_t         fEtapAside;        // Forward energy A side
+    Int_t           fpPDGCode;         // PDG code
+    Float_t        fPxpAside[50];      // momentum x component A side
+    Float_t        fPypAside[50];      // momentum y component A side    
+    Float_t        fPzpAside[50];      // momentum z component A side  
     //  
     Int_t           fNpCside;          // No. of protons emitted on right side            
-    Float_t         fEtapCside;        // Forward energy Cside side
-    Float_t        fPxpCside[70];      // momentum x component - right side
-    Float_t        fPypCside[70];      // momentum y component - right side     
-    Float_t        fPzpCside[70];      // momentum z component - right side
-    
+    Float_t         fEtapCside;        // Forward energy C side
+    Float_t        fPxpCside[50];      // momentum x component C side
+    Float_t        fPypCside[50];      // momentum y component C side    
+    Float_t        fPzpCside[50];      // momentum z component C side
+    //
+    // **** pi +
+    Int_t           fNppAside;         // No. of pi+ emitted pi+ on A side            
+    Float_t         fEtappAside;       // Forward energy pi+ A side
+    Int_t           fppPDGCode;        // PDG code
+    Float_t        fPxppAside[30];     // momentum x component pi+ A side
+    Float_t        fPyppAside[30];     // momentum y component pi+ A side        
+    Float_t        fPzppAside[30];     // momentum z component pi+ A side      
+    //  
+    Int_t           fNppCside;         // No. of pi+ emitted on C side            
+    Float_t         fEtappCside;       // Forward energy pi+ C side
+    Float_t        fPxppCside[30];     // momentum x component pi+ C side
+    Float_t        fPyppCside[30];     // momentum y component pi+ C side        
+    Float_t        fPzppCside[30];     // momentum z component pi+ C side
+    //
+    // **** pi -
+    Int_t           fNpmAside;         // No. of pi- emitted on A side            
+    Float_t         fEtapmAside;       // Forward energy pi- A side
+    Int_t           fpmPDGCode;        // PDG code
+    Float_t        fPxpmAside[30];     // momentum x component pi- A side
+    Float_t        fPypmAside[30];     // momentum y component pi- A side        
+    Float_t        fPzpmAside[30];     // momentum z component pi- A side      
+    //  
+    Int_t           fNpmCside;         // No. of pi- emitted on C side            
+    Float_t         fEtapmCside;       // Forward energy pi- C side
+    Float_t        fPxpmCside[30];     // momentum x component pi- C side
+    Float_t        fPypmCside[30];     // momentum y component pi- C side        
+    Float_t        fPzpmCside[30];     // momentum z component pi- C side
+    //
+    // **** pi0
+    Int_t           fNp0Aside;         // No. of pi0 emitted on A side            
+    Float_t         fEtap0Aside;       // Forward energy pi0 A side
+    Int_t           fp0PDGCode;        // PDG code
+    Float_t        fPxp0Aside[30];     // momentum x component pi0 A side
+    Float_t        fPyp0Aside[30];     // momentum y component pi0 A side        
+    Float_t        fPzp0Aside[30];     // momentum z component pi0 A side      
+    //  
+    Int_t           fNp0Cside;         // No. of pi0 emitted on C side            
+    Float_t         fEtap0Cside;       // Forward energy pi0 C side
+    Float_t        fPxp0Cside[30];     // momentum x component pi0 C side
+    Float_t        fPyp0Cside[30];     // momentum y component pi0 C side        
+    Float_t        fPzp0Cside[30];     // momentum z component pi0 C side
+    //
+    // **** eta
+    Int_t           fNetaAside;                // No. of eta emitted on A side            
+    Float_t         fEtaetaAside;      // Forward energy eta A side
+    Int_t           fetaPDGCode;       // PDG code
+    Float_t        fPxetaAside[15];    // momentum x component eta A side
+    Float_t        fPyetaAside[15];    // momentum y component eta A side       
+    Float_t        fPzetaAside[15];    // momentum z component eta A side     
+    //  
+    Int_t           fNetaCside;                // No. of eta emitted on C side            
+    Float_t         fEtaetaCside;      // Forward energy eta C side
+    Float_t        fPxetaCside[15];    // momentum x component eta C side
+    Float_t        fPyetaCside[15];    // momentum y component eta C side       
+    Float_t        fPzetaCside[15];    // momentum z component eta C side
+    //
+    // **** omega
+    Int_t           fNomegaAside;      // No. of omega emitted on A side            
+    Float_t         fEtaomegaAside;    // Forward energy omega A side
+    Int_t           fomegaPDGCode;     // PDG code
+    Float_t        fPxomegaAside[15];  // momentum x component omega A side
+    Float_t        fPyomegaAside[15];  // momentum y component omega A side   
+    Float_t        fPzomegaAside[15];  // momentum z component omega A side     
+    //  
+    Int_t           fNomegaCside;      // No. of omega emitted on C side            
+    Float_t         fEtaomegaCside;    // Forward energy omega C side
+    Float_t        fPxomegaCside[15];  // momentum x component omega C side
+    Float_t        fPyomegaCside[15];  // momentum y component omega C side     
+    Float_t        fPzomegaCside[15];  // momentum z component omega C side
+   
  private:
     void Copy(TObject&) const;
-    ClassDef(AliGenReaderEMD,1) // Class to read EMD data
+    ClassDef(AliGenReaderEMD, 2) // Class to read EMD data
 };
 #endif