]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMC.cxx
Instead just bit-flag marking used clusters store ID's of ESDtracks for
[u/mrichter/AliRoot.git] / STEER / AliMC.cxx
index 57f26fa74d6fb61b1f4061bec53bea12bf8ef5c2..6bd4e9324b0ccaa42f0ab4ad345770ca6bb2b3e1 100644 (file)
@@ -124,8 +124,8 @@ void  AliMC::ConstructGeometry()
   // at InitGeometry().
   //
 
-  if(gAlice->IsRootGeometry()){ //load geometry either from CDB or from file
-    if(gAlice->IsGeomFromCDB()){
+  if(AliSimulation::Instance()->IsGeometryFromFile()){ //load geometry either from CDB or from file
+    if(IsGeometryFromCDB()){
       AliInfo("Loading geometry from CDB default storage");
       AliCDBPath path("GRP","Geometry","Data");
       AliCDBEntry *entry=AliCDBManager::Instance()->Get(path.GetPath());
@@ -135,7 +135,7 @@ void  AliMC::ConstructGeometry()
       if (!gGeoManager) AliFatal("TGeoManager object not found in the specified CDB entry!");
     }else{
       // Load geometry
-      const char *geomfilename = gAlice->GetGeometryFileName();
+      const char *geomfilename = AliSimulation::Instance()->GetGeometryFile();
       if(gSystem->ExpandPathName(geomfilename)){
        AliInfo(Form("Loading geometry from file:\n %40s",geomfilename));
        TGeoManager::Import(geomfilename);
@@ -144,6 +144,7 @@ void  AliMC::ConstructGeometry()
        return;
       }
     }
+    gMC->SetRootGeometry();
   }else{
     // Create modules, materials, geometry
     if (!gGeoManager) new TGeoManager("ALICE", "ALICE geometry");
@@ -166,19 +167,19 @@ void  AliMC::ConstructGeometry()
 //_______________________________________________________________________
 Bool_t  AliMC::MisalignGeometry() 
 {
-// Call misalignment code if AliSimulation object was defined.
-
-   if(!gAlice->IsRootGeometry()){
-     //Set alignable volumes for the whole geometry
-     SetAllAlignableVolumes();
-   }
-   // Misalign geometry via AliSimulation instance
-   if (!AliSimulation::Instance()) return kFALSE;
-   AliGeomManager::SetGeometry(gGeoManager);
-   if(!AliGeomManager::CheckSymNamesLUT("ALL"))
+  // Call misalignment code if AliSimulation object was defined.
+  
+  if(!AliSimulation::Instance()->IsGeometryFromFile()){
+    //Set alignable volumes for the whole geometry
+    SetAllAlignableVolumes();
+  }
+  // Misalign geometry via AliSimulation instance
+  if (!AliSimulation::Instance()) return kFALSE;
+  AliGeomManager::SetGeometry(gGeoManager);
+  if(!AliGeomManager::CheckSymNamesLUT("ALL"))
     AliFatal("Current loaded geometry differs in the definition of symbolic names!");
-
-   return AliSimulation::Instance()->MisalignGeometry(AliRunLoader::Instance());
+  
+  return AliSimulation::Instance()->MisalignGeometry(AliRunLoader::Instance());
 }   
 
 //_______________________________________________________________________
@@ -193,7 +194,7 @@ void  AliMC::ConstructOpGeometry()
   AliInfo("Optical properties definition");
   while((detector = dynamic_cast<AliModule*>(next()))) {
     // Initialise detector geometry
-    if(gAlice->IsRootGeometry()) detector->CreateMaterials();
+    if(AliSimulation::Instance()->IsGeometryFromFile()) detector->CreateMaterials();
     // Initialise detector optical properties
     detector->DefineOpticalProperties();
   }  
@@ -218,6 +219,24 @@ void  AliMC::InitGeometry()
   }
 }
 
+//_______________________________________________________________________
+void AliMC::SetGeometryFromCDB()
+{
+  // Set the loading of geometry from cdb instead of creating it
+  // A default CDB storage needs to be set before this method is called
+  if(AliCDBManager::Instance()->IsDefaultStorageSet() &&
+     AliCDBManager::Instance()->GetRun() >= 0)
+    AliSimulation::Instance()->SetGeometryFile("*OCDB*");
+  else
+    AliError("Loading of geometry from CDB ignored. First set a default CDB storage!");
+}
+
+//_______________________________________________________________________
+Bool_t AliMC::IsGeometryFromCDB() const
+{
+  return (strcmp(AliSimulation::Instance()->GetGeometryFile(),"*OCDB*")==0);
+}
+
 //_______________________________________________________________________
 void  AliMC::SetAllAlignableVolumes()
 { 
@@ -794,12 +813,12 @@ void AliMC::ReadTransPar()
 
 
   const Int_t kncuts=10;
-  const Int_t knflags=11;
+  const Int_t knflags=12;
   const Int_t knpars=kncuts+knflags;
   const char kpars[knpars][7] = {"CUTGAM" ,"CUTELE","CUTNEU","CUTHAD","CUTMUO",
                               "BCUTE","BCUTM","DCUTE","DCUTM","PPCUTM","ANNI",
                               "BREM","COMP","DCAY","DRAY","HADR","LOSS",
-                              "MULS","PAIR","PHOT","RAYL"};
+                              "MULS","PAIR","PHOT","RAYL","STRA"};
   char line[256];
   char detName[7];
   char* filtmp;
@@ -835,10 +854,10 @@ void AliMC::ReadTransPar()
     if(!iret) continue;
     if(line[0]=='*') continue;
     // Read the numbers
-    iret=sscanf(line,"%s %d %f %f %f %f %f %f %f %f %f %f %d %d %d %d %d %d %d %d %d %d %d",
+    iret=sscanf(line,"%s %d %f %f %f %f %f %f %f %f %f %f %d %d %d %d %d %d %d %d %d %d %d %d",
                detName,&itmed,&cut[0],&cut[1],&cut[2],&cut[3],&cut[4],&cut[5],&cut[6],&cut[7],&cut[8],
                &cut[9],&flag[0],&flag[1],&flag[2],&flag[3],&flag[4],&flag[5],&flag[6],&flag[7],
-               &flag[8],&flag[9],&flag[10]);
+               &flag[8],&flag[9],&flag[10],&flag[11]);
     if(!iret) continue;
     if(iret<0) {
       //reading error
@@ -1148,7 +1167,7 @@ void AliMC::FixParticleDecaytime()
        //
  
        tmax  = TMath::ACos((1.-fRDecayMax*kOvRhoSqr2)*(1.+fRDecayMax*kOvRhoSqr2)) / omega;   // [ct]
-       tmax  = TMath::ACos((1.-fRDecayMin*kOvRhoSqr2)*(1.+fRDecayMin*kOvRhoSqr2)) / omega;   // [ct]
+       tmin  = TMath::ACos((1.-fRDecayMin*kOvRhoSqr2)*(1.+fRDecayMin*kOvRhoSqr2)) / omega;   // [ct]
     } else {
        tmax =  fRDecayMax / vt;                                                      // [ct] 
        tmin =  fRDecayMin / vt;                                                      // [ct]