]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDsimpleMC.h
Adding mask handling, where masks are read from the CDB
[u/mrichter/AliRoot.git] / TRD / AliTRDsimpleMC.h
index 7312ebb4b970055c6d9cd6e63fd1ebee8cb429dd..2f076b6bc0e931bd9debc515f471ecc7054f37c8 100644 (file)
@@ -2,25 +2,26 @@
 #define ALITRDSIMPLEMC_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
+
 /* $Id$ */
+
 ///////////////////////////////////////////////////////////////////////////////
 //                                                                           //
 //  Simple TRD Monte Carlo class                                             //
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
+
+#include <RVersion.h>
 #include <TMCProcess.h>
 #include <TVirtualMC.h>
 #include "AliDecayer.h"
 
 class AliTRDv1;
-class AliTRDparameter;
+class TArrayD;
+
 class AliTRDsimpleMC : public TVirtualMC {
- public:     
+
+ public:
 
   enum {
       kPdgElectron = 11
@@ -29,70 +30,70 @@ class AliTRDsimpleMC : public TVirtualMC {
 
   AliTRDsimpleMC();
   AliTRDsimpleMC(const char *name, const char *title);
-  AliTRDsimpleMC(const AliTRDsimpleMC &m); 
-                                                                                
+  AliTRDsimpleMC(const AliTRDsimpleMC &m);
+
   virtual ~AliTRDsimpleMC();
-  AliTRDsimpleMC &operator=(const AliTRDsimpleMC &m);    
+  AliTRDsimpleMC &operator=(const AliTRDsimpleMC &m);
 
-  virtual void          Copy(TObject &m);
+  virtual void          Copy(TObject &m) const;
 
   //
   // Methods for building / management of geometry
   //
 
-  // Functions from GCONS 
-    virtual void  Gfmate(Int_t , char* , Float_t& , Float_t& ,  
+  // Functions from GCONS
+    virtual void  Gfmate(Int_t , char* , Float_t& , Float_t& ,
                         Float_t& , Float_t& , Float_t& ,
                         Float_t* , Int_t& )  {}
-    virtual void  Gfmate(Int_t , char* , Double_t& , Double_t& ,  
+    virtual void  Gfmate(Int_t , char* , Double_t& , Double_t& ,
                         Double_t& , Double_t& , Double_t& ,
                         Double_t* , Int_t& ) {}
 
   // Detector composition
-    virtual void  Material(Int_t& , const char* , Double_t , 
+    virtual void  Material(Int_t& , const char* , Double_t ,
                      Double_t , Double_t , Double_t , Double_t ,
                      Float_t* , Int_t ) {}
-    virtual void  Material(Int_t& , const char* , Double_t , 
+    virtual void  Material(Int_t& , const char* , Double_t ,
                      Double_t , Double_t , Double_t , Double_t ,
                      Double_t* , Int_t ) {}
-    virtual void  Mixture(Int_t& , const char* , Float_t* , 
+    virtual void  Mixture(Int_t& , const char* , Float_t* ,
                      Float_t *, Double_t , Int_t , Float_t* ) {}
-    virtual void  Mixture(Int_t& , const char* , Double_t *, 
+    virtual void  Mixture(Int_t& , const char* , Double_t *,
                      Double_t *, Double_t , Int_t , Double_t* ) {}
-    virtual void  Medium(Int_t& , const char* , Int_t , 
-                     Int_t , Int_t , Double_t , Double_t , 
-                     Double_t , Double_t , Double_t , 
+    virtual void  Medium(Int_t& , const char* , Int_t ,
+                     Int_t , Int_t , Double_t , Double_t ,
+                     Double_t , Double_t , Double_t ,
                     Double_t , Float_t* , Int_t ) {}
-    virtual void  Medium(Int_t& , const char* , Int_t , 
-                     Int_t , Int_t , Double_t , Double_t , 
-                     Double_t , Double_t , Double_t , 
+    virtual void  Medium(Int_t& , const char* , Int_t ,
+                     Int_t , Int_t , Double_t , Double_t ,
+                     Double_t , Double_t , Double_t ,
                     Double_t , Double_t* , Int_t ) {}
-    virtual void  Matrix(Int_t& , Double_t , Double_t , 
-                     Double_t , Double_t , Double_t , 
+    virtual void  Matrix(Int_t& , Double_t , Double_t ,
+                     Double_t , Double_t , Double_t ,
                     Double_t ) {}
-    virtual void  Gstpar(Int_t , const char* , Double_t ) {} 
+    virtual void  Gstpar(Int_t , const char* , Double_t ) {}
 
-  // Functions from GGEOM 
-    virtual Int_t  Gsvolu(const char* , const char* , Int_t ,  
+  // Functions from GGEOM
+    virtual Int_t  Gsvolu(const char* , const char* , Int_t ,
                           Float_t* , Int_t )  { return 0; }
-    virtual Int_t  Gsvolu(const char* , const char* , Int_t ,  
-                          Double_t* , Int_t) { return 0; } 
-    virtual void  Gsdvn(const char* , const char* , Int_t , 
-                         Int_t ) {} 
-    virtual void  Gsdvn2(const char* , const char* , Int_t , 
-                         Int_t , Double_t , Int_t ) {} 
-    virtual void  Gsdvt(const char* , const char* , Double_t , 
-                         Int_t , Int_t , Int_t ) {} 
-    virtual void  Gsdvt2(const char* , const char* , Double_t , 
-                         Int_t , Double_t , Int_t , Int_t ) {} 
-    virtual void  Gsord(const char* , Int_t ) {} 
-    virtual void  Gspos(const char* , Int_t , const char* ,  
-                         Double_t , Double_t , Double_t , Int_t , 
-                         const char* ) {} 
-    virtual void  Gsposp(const char* , Int_t , const char* ,  
+    virtual Int_t  Gsvolu(const char* , const char* , Int_t ,
+                          Double_t* , Int_t) { return 0; }
+    virtual void  Gsdvn(const char* , const char* , Int_t ,
+                         Int_t ) {}
+    virtual void  Gsdvn2(const char* , const char* , Int_t ,
+                         Int_t , Double_t , Int_t ) {}
+    virtual void  Gsdvt(const char* , const char* , Double_t ,
+                         Int_t , Int_t , Int_t ) {}
+    virtual void  Gsdvt2(const char* , const char* , Double_t ,
+                         Int_t , Double_t , Int_t , Int_t ) {}
+    virtual void  Gsord(const char* , Int_t ) {}
+    virtual void  Gspos(const char* , Int_t , const char* ,
+                         Double_t , Double_t , Double_t , Int_t ,
+                         const char* ) {}
+    virtual void  Gsposp(const char* , Int_t , const char* ,
                          Double_t, Double_t, Double_t, Int_t ,
                          const char* , Float_t* , Int_t ) {}
-    virtual void  Gsposp(const char* , Int_t , const char* ,  
+    virtual void  Gsposp(const char* , Int_t , const char* ,
                          Double_t , Double_t , Double_t , Int_t ,
                          const char* , Double_t* , Int_t ) {}
     virtual void  Gsbool(const char* , const char* ) {}
@@ -111,7 +112,7 @@ class AliTRDsimpleMC : public TVirtualMC {
 
   // Euclid
   virtual void          WriteEuclid(const char* , const char* , Int_t , Int_t ) {}
-                              
+
   // Get methods
     virtual Int_t VolId(const Text_t* volName) const;
     virtual const char* VolName(Int_t ) const { return ""; }
@@ -121,41 +122,49 @@ class AliTRDsimpleMC : public TVirtualMC {
   //
   // Methods for physics management
   //
+
   // Set methods
+#if ROOT_VERSION_CODE > 262150
+    virtual Bool_t   SetCut(const char* , Double_t ) { return kTRUE; }
+    virtual Bool_t   SetProcess(const char* , Int_t ) { return kTRUE; }
+#else
     virtual void     SetCut(const char* , Double_t ) {}
     virtual void     SetProcess(const char* , Int_t ) {}
-    virtual Double_t Xsec(char*, Double_t, Int_t, Int_t) { return 0.; } 
-  // Particle table usage         
-    virtual Int_t   IdFromPDG(Int_t ) const { return 0; }  
-    virtual Int_t   PDGFromId(Int_t ) const { return 0; }  
-    virtual void    DefineParticles() {}      
-  
+#endif
+    virtual void     DefineParticles() {}
+    virtual Double_t Xsec(char*, Double_t, Int_t, Int_t) { return 0.; }
+
+  // Particle table usage
+    virtual Int_t   IdFromPDG(Int_t ) const { return 0; }
+    virtual Int_t   PDGFromId(Int_t ) const { return 0; }
+
   //
   // Methods for step management
   //
 
   // Action methods
   virtual void          StopTrack() { };
-  virtual void          StopEvent() { };   
+  virtual void          StopEvent() { };
+#if ROOT_VERSION_CODE >= 262150
+  virtual void          StopRun()   { }
+#endif
 
   // Set methods
   virtual void          SetMaxStep(Double_t step)                                         { fMaxStep = step; };
   virtual void          SetMaxNStep(Int_t )                                              { };
-  virtual void          SetUserDecay(Int_t )                                             { };  
+  virtual void          SetUserDecay(Int_t )                                             { };
 
   virtual void          NewTrack(Int_t iTrack, Int_t pdg, Double_t px, Double_t py, Double_t pz);
 
-  // Tracking volume(s) 
+  // Tracking volume(s)
   virtual Int_t         CurrentVolID(Int_t& copyNo) const;
   virtual Int_t         CurrentVolOffID(Int_t off, Int_t& copyNo) const;
   virtual const char*   CurrentVolName() const;
   virtual const char*   CurrentVolOffName(Int_t ) const                                { return ""; };
-  virtual Int_t         CurrentMaterial(Float_t& , Float_t& , 
-                                        Float_t& , Float_t& , 
-                                       Float_t& ) const                               { return 0;  };  
-  virtual Int_t         CurrentEvent() const                                              { return 0;  }; 
+  virtual Int_t         CurrentMaterial(Float_t& , Float_t& ,
+                                        Float_t& , Float_t& ,
+                                       Float_t& ) const                               { return 0;  };
+  virtual Int_t         CurrentEvent() const                                              { return 0;  };
   virtual void          Gmtod(Float_t* , Float_t* , Int_t )   {}
   virtual void          Gmtod(Double_t* , Double_t* , Int_t ) {}
   virtual void          Gdtom(Float_t* , Float_t* , Int_t )   {}
@@ -164,6 +173,14 @@ class AliTRDsimpleMC : public TVirtualMC {
   virtual Int_t         GetNStep() const                                                  { return fNStep;   };
   virtual Int_t         GetMaxNStep() const                                               { return 0;  };
   virtual Int_t         GetMedium() const                                                 { return 0;  };
+  virtual Bool_t GetMedium(const TString& /*volumeName*/,
+                          TString& /*name*/, Int_t& /*imed*/,
+                          Int_t& /*nmat*/, Int_t& /*isvol*/, Int_t& /*ifield*/,
+                          Double_t& /*fieldm*/, Double_t& /*tmaxfd*/, Double_t& /*stemax*/,
+                          Double_t& /*deemax*/, Double_t& /*epsil*/, Double_t& /*stmin*/,
+                          TArrayD& /*par*/) {
+   return kFALSE;
+}   
 
   // Dynamic properties
   virtual void          TrackPosition(TLorentzVector& position) const;
@@ -174,7 +191,7 @@ class AliTRDsimpleMC : public TVirtualMC {
   virtual Double_t      TrackLength() const                                               { return 0.0; };
   virtual Double_t      TrackTime() const                                                 { return 0.0; };
   virtual Double_t      Edep() const                                                      { return 0.0; };
-  
+
   // Static properties
   virtual Int_t         TrackPid() const                                                  { return fTrackPid;    };
   virtual Double_t      TrackCharge() const                                               { return fTrackCharge; };
@@ -193,50 +210,72 @@ class AliTRDsimpleMC : public TVirtualMC {
 
   // Secondaries
   virtual Int_t         NSecondaries() const                                              { return 0; };
-  virtual void          GetSecondary(Int_t , Int_t& , 
-                                     TLorentzVector& , 
+  virtual void          GetSecondary(Int_t , Int_t& ,
+                                     TLorentzVector& ,
                                      TLorentzVector& )                                    { };
-  virtual TMCProcess  ProdProcess(Int_t ) const                                           { return kPNoProcess; }; 
+  virtual Bool_t        SecondariesAreOrdered() const {return kTRUE;}
+  virtual TMCProcess    ProdProcess(Int_t ) const                                           { return kPNoProcess; };
   virtual Int_t         StepProcesses(TArrayI& ) const                                    { return 0; };
 
   //
   // Other (then geometry/step/run management) methods
   //
-    
+
   // Geant3 specific methods
     virtual void Gdopt(const char*,const char*) {}
     virtual void SetClipBox(const char*,Double_t=-9999,Double_t=0, Double_t=-9999,
                              Double_t=0,Double_t=-9999,Double_t=0) {}
     virtual void DefaultRange() {}
-    virtual void Gdhead(Int_t, const char*, Double_t=0) {}   
+    virtual void Gdhead(Int_t, const char*, Double_t=0) {}
     virtual void Gdman(Double_t, Double_t, const char*) {}
     virtual void SetColors() {}
     virtual void Gtreve() {}
     virtual void GtreveRoot() {}
     virtual void Gckmat(Int_t, char*) {}
     virtual void InitLego() {}
-    virtual void Gfpart(Int_t, char*, Int_t&, Float_t&, Float_t&, Float_t&) {} 
-    virtual void Gspart(Int_t, const char*, Int_t, Double_t, Double_t, Double_t) {} 
-    virtual void DefineParticle(int, const char*, TMCParticleType, double, double, double);
-    virtual void DefineIon(const char*, int, int, int, double, double);
+    virtual void Gfpart(Int_t, char*, Int_t&, Float_t&, Float_t&, Float_t&) {}
+    virtual void Gspart(Int_t, const char*, Int_t, Double_t, Double_t, Double_t) {}
+    // Dummy methods
+#if ROOT_VERSION_CODE > 197895
+#if ROOT_VERSION_CODE > 262150
+    virtual Bool_t DefineParticle(int, const char*, TMCParticleType, double, double, double){ return kTRUE; }
+    virtual Bool_t DefineIon(const char*, int, int, int, double, double) { return kTRUE; }
+#else
+    virtual void DefineParticle(int, const char*, TMCParticleType, double, double, double){;}
+    virtual void DefineIon(const char*, int, int, int, double, double){;}
+#endif
     virtual TString  ParticleName(int) const {return "";}
     virtual Double_t ParticleMass(int) const {return 0.;}
     virtual Double_t ParticleCharge(int) const {return 0.;}
     virtual Double_t ParticleLifeTime(int) const {return 0.;}
     virtual TMCParticleType ParticleMCType(int) const {return (TMCParticleType) 0;}
-
+#endif
+    //
   // Control Methods
   virtual void          Init()                                                            { };
   virtual void          FinishGeometry()                                                  { };
   virtual void          BuildPhysics()                                                    { };
   virtual void          ProcessEvent();
+#if ROOT_VERSION_CODE >= 262150
+  virtual Bool_t        ProcessRun(Int_t )                                                { return kTRUE; }
+#else
   virtual void          ProcessRun(Int_t )                                                { };
+#endif
   //virtual TMCGeomType   GetMCGeomType() const                                             { return kGeant3; }
 
   // External Decayer
   virtual void          SetExternalDecayer(AliDecayer* )                                  { };
   virtual AliDecayer   *Decayer() const                                                   { return 0; };
 
+#if ROOT_VERSION_CODE>=262913
+  virtual void SetRootGeometry() {}
+  virtual Int_t NofVolDaughters(const char*) const {return 0;}
+  virtual const char* VolDaughterName(const char*, Int_t) const {return 0x0;}
+  virtual Int_t VolDaughterCopyNo(const char*, Int_t) const {return 0;}
+  virtual void ForceDecayTime(Float_t) {}
+  virtual const char* CurrentVolPath() {return 0x0;}
+#endif
+
  protected:
 
   enum {
@@ -264,10 +303,9 @@ class AliTRDsimpleMC : public TVirtualMC {
   Bool_t           fTrackEntering;      //  Track entering chamber
 
   AliTRDv1        *fTRD;                //! TRD detector object
-  AliTRDparameter *fPar;                //! TRD parameter object
 
-  ClassDef(AliTRDsimpleMC,2)            //  Simple TRD Monte Carlo class
+  ClassDef(AliTRDsimpleMC, 3)            //  Simple TRD Monte Carlo class
+
 };
-#endif                                                                          
+#endif