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
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];
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()
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
}
+//_______________________________________________________________________
+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()
{
// MC Application
//
virtual void ConstructGeometry();
+ virtual void ConstructOpGeometry();
virtual void InitGeometry();
virtual void SetAllAlignableVolumes();
virtual void GeneratePrimaries();
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();
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=" ");
}
//-------------------------------------------------------------------
-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;
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()));
}
//-------------------------------------------------------------------
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();
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;
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");
}
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;}
}
fApplication->InitGeometry();
-
+ fApplication->ConstructOpGeometry();
//
// Add ions to PDG Data base
//