Correct initialization of optical properties needed by Geant4 (Andrei)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Feb 2007 19:54:08 +0000 (19:54 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 6 Feb 2007 19:54:08 +0000 (19:54 +0000)
12 files changed:
HMPID/AliHMPID.h
HMPID/AliHMPIDv1.cxx
HMPID/AliHMPIDv1.h
STEER/AliMC.cxx
STEER/AliMC.h
STEER/AliModule.h
T0/AliT0.h
T0/AliT0v1.cxx
T0/AliT0v1.h
T0/AliT0v2.cxx
T0/AliT0v2.h
TFluka/TFluka.cxx

index 2931cfe..9a71c5f 100644 (file)
@@ -22,6 +22,7 @@ public:
   virtual void  CreateGeometry  (                )=0;          //from AliModule invoked from AliMC::ConstructGeometry() to build detector for simulation
   virtual Int_t IsVersion       (                )const=0;     //from AliModule not used        
   virtual void  Init            (                )=0;          //from AliModule invoked from AliMC::InitGeometry() after CreateGeometry() to do VolID initialization
+  virtual void  DefineOpticalProperties() {}                   //from AliModule invoked from AliMC::ConstructOpGeometry() to set Cerenkov properties
           void  MakeBranch      (Option_t *opt="");            //from AliModule invokde from AliRun::Tree2Tree() to make requested HMPID branch
           void  SetTreeAddress  (                );            //from AliModule invoked from AliRun::GetEvent(), AliLoader::SetTAddrInDet()
   virtual void  StepManager     (                )=0;          //from AliModule invoked from AliMC
index da3c26c..2e679f2 100644 (file)
@@ -263,6 +263,13 @@ void AliHMPIDv1::Init()
   fIdPc      = gMC->VolId("Rpc");
   fIdAmpGap  = gMC->VolId("Rgap");
   fIdProxGap = gMC->VolId("Rgap");
+
+  AliDebug(1,"Stop v1 HMPID.");    
+}
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+void AliHMPIDv1::DefineOpticalProperties()
+{
+// Optical properties definition.
   const Int_t kNbins=30;       //number of photon energy points
   Float_t emin=5.5,emax=8.5;         //Photon energy range,[eV]
   Float_t aEckov [kNbins]; 
@@ -299,8 +306,6 @@ void AliHMPIDv1::Init()
   gMC->SetCerenkov((*fIdtmed)[kCsI]      , kNbins, aEckov, aAbsMet  , aQePc  , aIdxPc  ); //n=1 means convert photons    
   gMC->SetCerenkov((*fIdtmed)[kAl]       , kNbins, aEckov, aAbsMet  , aQeAll , aIdxMet );    
   delete pRaAF;delete pWiAF;delete pGaAF; delete pRaIF; delete pWiIF; delete pGaIF; delete pQeF;
-
-  AliDebug(1,"Stop v1 HMPID.");    
 }
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Bool_t AliHMPIDv1::IsLostByFresnel()
index 92dc5fd..e9b2f51 100644 (file)
@@ -19,6 +19,7 @@ public:
           void    CreateGeometry   (                                 );                                        //from AliModule invoked from AliMC
   AliDigitizer*   CreateDigitizer  (AliRunDigitizer *m               )const{return new AliHMPIDDigitizer(m);}   //from AliModule invoked from AliSimulation::RunDigitization()
           void    Digits2Raw       (                                 );                                        //from AliModule invoked from AliSimulation::WriteRawFiles()
+  virtual void    DefineOpticalProperties();                                                                   //from AliModule invoked from AliMC::ConstructOpGeometry() to set Cerenkov properties
           void    Hits2SDigits     (                                 );                                        //from AliModule invoked from AliSimulation::RunSDigitization()
           void    Init             (                                 );                                        //from AliModule invoked from AliMC::InitGeometry()
           Int_t   IsVersion        (                                 )const{return 1;                      }   //from AliModule not used
index f8b19af..d443cd9 100644 (file)
@@ -179,6 +179,22 @@ void  AliMC::ConstructGeometry()
 }
 
 //_______________________________________________________________________
+void  AliMC::ConstructOpGeometry() 
+{
+  //
+  // Loop all detector modules and call DefineOpticalProperties() method 
+  //
+
+  TIter next(gAlice->Modules());
+  AliModule *detector;
+  AliInfo("Optical properties definition");
+  while((detector = dynamic_cast<AliModule*>(next()))) {
+    // Initialise detector optical properties
+    detector->DefineOpticalProperties();
+  }  
+}
+
+//_______________________________________________________________________
 void  AliMC::InitGeometry()
 { 
   //
index 3aaf1df..23166f4 100644 (file)
@@ -38,6 +38,7 @@ public:
 //  MC Application
 //
    virtual  void  ConstructGeometry();
+   virtual  void  ConstructOpGeometry();
    virtual  void  InitGeometry();     
    virtual  void  SetAllAlignableVolumes();     
    virtual  void  GeneratePrimaries();
index 5999858..b28c2ba 100644 (file)
@@ -100,6 +100,7 @@ public:
   virtual void        Browse(TBrowser *) {} //PH Do we need it?
   virtual void        CreateGeometry() {}
   virtual void        CreateMaterials() {}
+  virtual void        DefineOpticalProperties() {}
   virtual void        AddAlignableVolumes() const;
   virtual void        Disable();
   virtual void        Enable();
index de26eac..89fc7f3 100644 (file)
@@ -42,6 +42,7 @@ public:
    virtual void   DrawDetector(){}
    virtual Int_t  IsVersion()const {return 0;}
    virtual void   Init();
+   virtual void   DefineOpticalProperties(){}
    virtual void SetHitsAddressBranch(TBranch *b1)
      {b1->SetAddress(&fHits);}
    virtual void   MakeBranch(Option_t *opt=" ");
index 7b1025f..a899f4b 100644 (file)
@@ -567,13 +567,9 @@ void AliT0v1::DrawDetector()
 }
 
 //-------------------------------------------------------------------
-void AliT0v1::Init()
+void AliT0v1::DefineOpticalProperties()
 {
-// Initialises version 0 of the Forward Multiplicity Detector
-//
-//Int_t *idtmed  = gAlice->Idtmed();
-  AliT0::Init();
-  fIdSens1=gMC->VolId("0REG");
+// Optical properties definition.
    Int_t *idtmed = fIdtmed->GetArray();
 // Definition Cherenkov parameters
    int i;
@@ -624,9 +620,17 @@ void AliT0v1::Init()
    gMC->SetCerenkov (idtmed[kOpGlassCathode], kNbins, aPckov, aAbsSiO2,efficAll , rindexSiO2 );
   gMC->SetCerenkov (idtmed[kOpAir], kNbins, aPckov,absorAir , efficAll,rindexAir );
    gMC->SetCerenkov (idtmed[kOpAirNext], kNbins, aPckov,absorbCathodeNext , efficAll, rindexCathodeNext);
+}
 
-   AliDebug(1,Form("%s: *** T0 version 1 initialized ***\n",ClassName()));
+//-------------------------------------------------------------------
+void AliT0v1::Init()
+{
+// Initialises version 0 of the Forward Multiplicity Detector
+//
+  AliT0::Init();
+  fIdSens1=gMC->VolId("0REG");
 
+   AliDebug(1,Form("%s: *** T0 version 1 initialized ***\n",ClassName()));
 }
 
 //-------------------------------------------------------------------
index dc16289..aff944e 100644 (file)
@@ -21,6 +21,7 @@ public:
   AliT0v1(const char *name, const char *title);
   virtual       ~AliT0v1();
   virtual void   CreateGeometry();
+  virtual void   DefineOpticalProperties();
   virtual void   AddAlignableVolumes() const;
   virtual void   CreateMaterials();
   virtual void   DrawDetector();
index d04abed..91b1edc 100644 (file)
@@ -245,16 +245,12 @@ void AliT0v2::DrawModule() const
   gMC->Gdopt ("hide", "off");
 }
 
-
 //////////////////////////////////////////////////////////////////////
-// Initialises version 2 of the Forward Multiplicity Detector
+// Definition of optical properties for the Forward Multiplicity Detector
 //////////////////////////////////////////////////////////////////////
-void AliT0v2::Init()
+void AliT0v2::DefineOpticalProperties()
 {
-//Int_t *idtmed  = gAlice->Idtmed();
-
-  AliT0::Init();
-  fIdSens1 = gMC->VolId ("0REG");
+// Optical properties definition.
 // Definition Cherenkov parameters
   const Int_t NUMENTRIES = 32;
 
@@ -303,7 +299,15 @@ void AliT0v2::Init()
 
    gMC->SetCerenkov (idtmed[6], NUMENTRIES, ppckov, absor_qwarz, effic_all, rindex_qwarz);
    gMC->SetCerenkov (idtmed[1], NUMENTRIES, ppckov, absor_air, effic_all, rindex_air);
+}
 
+//////////////////////////////////////////////////////////////////////
+// Initialises version 2 of the Forward Multiplicity Detector
+//////////////////////////////////////////////////////////////////////
+void AliT0v2::Init()
+{
+  AliT0::Init();
+  fIdSens1 = gMC->VolId ("0REG");
   printf ("*** T0 version 2 initialized ***\n");
 }
 
index 3925ba5..e8694c2 100644 (file)
@@ -19,6 +19,7 @@ public:
   virtual       ~AliT0v2() {}
   virtual void   CreateGeometry();
   virtual void   CreateMaterials();
+  virtual void   DefineOpticalProperties();
   virtual void   DrawModule() const;
   virtual void   Init();
   virtual Int_t  IsVersion() const {return 0;}
index 91de886..7418c0c 100644 (file)
@@ -249,7 +249,7 @@ void TFluka::Init() {
     }
 
     fApplication->InitGeometry();
-
+    fApplication->ConstructOpGeometry();
     //
     // Add ions to PDG Data base
     //