]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSBeamTestDigitizer.cxx
Minor issues solved. Additional printouts for debugging purposes (H. Tydesjo)
[u/mrichter/AliRoot.git] / ITS / AliITSBeamTestDigitizer.cxx
index b9dff15da0f47177e25483e3cffb9637a5c611cb..b1ac155df23777964a804971144c758bea00db30 100644 (file)
@@ -3,6 +3,8 @@
 //  ITS beam test conversion from rawdata         //
 //  to digits. It executes the digitization for   //
 //  SPD, SDD and SSD.                             //
+//                                                //
+//                                                //
 //  Origin:  E. Crescio crescio@to.infn.it        //
 //           J. Conrad  Jan.Conrad@cern.ch        //
 ////////////////////////////////////////////////////
 #include "AliRunLoader.h"
 #include "AliITSEventHeader.h"
 #include "AliITSLoader.h"
-#include "AliITSvBeamTestITS04.h"
-#include "AliITSvSDD03.h"
 #include "AliITSBeamTestDigSDD.h"
 #include "AliITSBeamTestDigSPD.h"
 #include "AliITSBeamTestDigSSD.h"
 #include "AliITSBeamTestDigitizer.h"
 #include "AliRawReaderDate.h"
-#include "TGeoManager.h"
-#include "TGeoMaterial.h"
-#include "TGeoMedium.h"
-#include "TGeoVolume.h"
-#include <TGeant3.h>
+#include "AliRawReaderRoot.h"
 
 const TString AliITSBeamTestDigitizer::fgkDefaultDigitsFileName="ITS.Digits.root";  
 
@@ -30,128 +26,94 @@ ClassImp(AliITSBeamTestDigitizer)
 
 
 //_____________________________________________________________
-AliITSBeamTestDigitizer::AliITSBeamTestDigitizer():TTask() 
-{  
+AliITSBeamTestDigitizer::AliITSBeamTestDigitizer():TTask(), 
+fEvIn(0),
+fEvFin(0),
+fRunNumber(-1),
+fDATEEvType(7),
+fFlagHeader(kTRUE),
+fFlagInit(kFALSE),
+fOptDate(kFALSE),
+fDigitsFileName(0),
+fRawdataFileName(0),
+fPeriod(kNov04),
+fRunLoader(0),
+fLoader(0),
+fHeader(0){  
   //
   // Default constructor
   //
-  fRunLoader = 0;
-  fLoader =0;
-  fEvIn=0;
-  fEvFin=0;
-  fFlagHeader=kTRUE;
-  fDATEEvType=7;
-  fRunNumber=-1;
   SetFlagInit();
-  fBt=0;
-  fPeriod=kNov04;
+  SetOptDate();
 } 
 
 //_____________________________________________________________
-  AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title, Char_t* opt):TTask(name,title) 
+AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title, Char_t* opt,const char* filename):TTask(name,title),
+fEvIn(0),
+fEvFin(0),
+fRunNumber(-1),
+fDATEEvType(7),
+fFlagHeader(kTRUE),
+fFlagInit(kFALSE),
+fOptDate(kFALSE),
+fDigitsFileName(0),
+fRawdataFileName(0),
+fPeriod(kNov04),
+fRunLoader(0),
+fLoader(0),
+fHeader(0) 
 {  
   //
   // Standard constructor 
   //
-  fRunLoader=0;
-  fLoader=0;
-  fBt=0;
-  fEvIn=0;
-  fEvFin=0;
-  fDATEEvType=7;
-  fFlagHeader=kTRUE;
-  fRunNumber=-1;
+  SetOptDate();
 
   TString choice(opt);
   Bool_t aug04 = choice.Contains("Aug04");
   Bool_t nov04 = choice.Contains("Nov04");
   if(aug04) fPeriod=kAug04;
   if(nov04) fPeriod=kNov04;
-  Init();
+  Init(filename);
  } 
 
 //_____________________________________________________________
-  AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title, Int_t run, Char_t* opt):TTask(name,title) 
-
-{  
+AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title, Int_t run, Char_t* opt,const char* filename):TTask(name,title), 
+fEvIn(0),
+fEvFin(0),
+fRunNumber(run),
+fDATEEvType(7),
+fFlagHeader(kTRUE),
+fFlagInit(kFALSE),
+fOptDate(kFALSE),
+fDigitsFileName(0),
+fRawdataFileName(0),
+fPeriod(kNov04),
+fRunLoader(0),
+fLoader(0),
+fHeader(0){  
   //
   // Constructor 
   //
-  fRunLoader=0;
-  fLoader=0;
-  fBt=0;
-  fEvIn=0;
-  fEvFin=0;
-  fDATEEvType=7;
-  fFlagHeader=kTRUE;
-  fRunNumber=run;
+  SetOptDate();
   TString choice(opt);
   Bool_t aug04 = choice.Contains("Aug04");
   Bool_t nov04 = choice.Contains("Nov04");
   if(aug04) fPeriod=kAug04;
   if(nov04) fPeriod=kNov04;
 
-  Init();
+  Init(filename);
  } 
 
 //___________________________________________________________
-void AliITSBeamTestDigitizer::Init(){
+void AliITSBeamTestDigitizer::Init(const char* filename){
 
   //
   //Initialization of run loader and its loader 
   //creation of galice.root
   //
 
-  fRunLoader = AliRunLoader::Open("galice.root",
-                                 AliConfig::GetDefaultEventFolderName(),"recreate");
-  
-  gAlice->SetRunLoader(fRunLoader);    
-  fRunLoader->SetEventFolderName();
-  if(GetBeamTestPeriod()==kNov04){
-    if(gGeoManager) delete gGeoManager;
-    gGeoManager = new TGeoManager("ITSGeometry","ITS Simulation Geometry Manager");
-    TGeoMaterial *vacmat = new TGeoMaterial("Vacuum",0,0,0);
-    TGeoMedium   *vacmed = new TGeoMedium("Vacuum_med",1,vacmat);
-    TGeoVolume *aLICE = gGeoManager->MakeBox("ALICE",vacmed,100.,100.,200.);
-    gGeoManager->SetTopVolume(aLICE);  
-    fBt = new AliITSvBeamTestITS04("ITS","ITS beam test");
-    fBt->CreateGeometry();
-    fBt->Init();
-
-  }
-  if(GetBeamTestPeriod()==kAug04){
-    fBt = new AliITSvSDD03("ITS",2004);
-    gSystem->Load("libgeant321");
-    new TGeant3("C++ Interface to Geant3");
-    fBt->CreateMaterials();
-    fBt->CreateGeometry();
-    fBt->Init();
-  }
-  gAlice->AddModule(fBt);
-  fBt->SetDefaults();   
-  fRunLoader->AddLoader(fBt);
-  fLoader = (AliITSLoader*)fRunLoader->GetLoader("ITSLoader");
-  fRunLoader->MakeTree("E");  
-  fRunLoader->WriteHeader("OVERWRITE");
-  fRunLoader->WriteRunLoader("OVERWRITE");
-  fRunLoader->WriteAliRun("OVERWRITE"); 
-  
-  fDigitsFileName=fgkDefaultDigitsFileName;
-  this->Add(new AliITSBeamTestDigSPD("DigSPD","SPD Digitization")); 
-  this->Add(new AliITSBeamTestDigSDD("DigSDD","SDD Digitization")); 
-  this->Add(new AliITSBeamTestDigSSD("DigSSD","SSD Digitization"));
-
-  SetFlagInit(kTRUE);
-}
-
-//_____________________________________________________________
-  AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const char* filename)
-{
-  //
-  // Constructor for reading (reads galice.root)
-  //
 
-  fRunLoader = AliRunLoader::Open(filename);
+  fRunLoader = AliRunLoader::Open(filename,AliConfig::GetDefaultEventFolderName(),"update");
   if (fRunLoader == 0x0)
     {
       Error("AliITSBeamTestDigitizer","Can not load the session",filename);
@@ -164,38 +126,41 @@ void AliITSBeamTestDigitizer::Init(){
     Error("AliITSBeamTestDigitizer","gAlice not found on file. Aborting.");
     return;
   } 
-  
+  fRunLoader->MakeTree("E");  
   fLoader = (AliITSLoader*)fRunLoader->GetLoader("ITSLoader");
-  
-  //fBt = (AliITSBeamTest*)gAlice->GetDetector("ITS");
-  fBt->SetDefaults();
 
   fDigitsFileName=fgkDefaultDigitsFileName;
+  this->Add(new AliITSBeamTestDigSPD("DigSPD","SPD Digitization")); 
+  this->Add(new AliITSBeamTestDigSDD("DigSDD","SDD Digitization")); 
+  this->Add(new AliITSBeamTestDigSSD("DigSSD","SSD Digitization"));
 
-  fEvIn=0;
-  fEvFin=0;
-  
+  SetFlagInit(kTRUE);
 }
 
+
 //______________________________________________________________________
-AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const AliITSBeamTestDigitizer &bt):TTask(bt){
+AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const AliITSBeamTestDigitizer &bt):TTask(bt),
+fEvIn(bt.fEvIn),
+fEvFin(bt.fEvFin),
+fRunNumber(bt.fRunNumber),
+fDATEEvType(bt.fDATEEvType),
+fFlagHeader(bt.fFlagHeader),
+fFlagInit(bt.fFlagInit),
+fOptDate(bt.fOptDate),
+fDigitsFileName(bt.fDigitsFileName),
+fRawdataFileName(bt.fRawdataFileName),
+fPeriod(bt.fPeriod),
+fRunLoader(bt.fRunLoader),
+fLoader(bt.fLoader),
+fHeader(bt.fHeader){
   // Copy constructor. 
-  //not allowed
-  if(this==&bt) return;
-  Error("Copy constructor",
-       "You are not allowed to make a copy of the AliITSBeamTestDigitizer");
-  exit(1);
-
 }
 //______________________________________________________________________
 AliITSBeamTestDigitizer& AliITSBeamTestDigitizer::operator=(const AliITSBeamTestDigitizer &source){
-    // Assignment operator. This is a function which is not allowed to be
-    // done to the ITS beam test digitizer. It exits with an error.
-    // Inputs:
-    if(this==&source) return *this;
-    Error("operator=","You are not allowed to make a copy of the AliITSBeamTestDigitizer");
-    exit(1);
-    return *this; //fake return
+    // Assignment operator. 
+  this->~AliITSBeamTestDigitizer();
+  new(this) AliITSBeamTestDigitizer(source);
+  return *this;
 }
 
 
@@ -203,7 +168,7 @@ AliITSBeamTestDigitizer& AliITSBeamTestDigitizer::operator=(const AliITSBeamTest
 AliITSBeamTestDigitizer::~AliITSBeamTestDigitizer(){
 
   //Destructor
-  if(fBt) delete fBt;
+  //  if(fBt) delete fBt;
   if(fLoader) delete fLoader;
   if(fHeader) delete fHeader;
 } 
@@ -231,9 +196,12 @@ void AliITSBeamTestDigitizer::ExecDigitization(){
   fLoader->SetDigitsFileName(fDigitsFileName);
   fLoader->LoadDigits("recreate");
  
-  AliRawReaderDate rd(fRawdataFileName,fEvIn);
+  AliRawReader* rd;
+
+  if(GetOptDate()) rd = new AliRawReaderDate(fRawdataFileName,fEvIn);
+  else rd = new AliRawReaderRoot(fRawdataFileName,fEvIn);
+
   AliHeader* header = fRunLoader->GetHeader();
-  
   Int_t iev=fEvIn-1;
 
   
@@ -250,12 +218,12 @@ void AliITSBeamTestDigitizer::ExecDigitization(){
     AliITSEventHeader* itsh = new AliITSEventHeader("ITSHeader");
     fRunLoader->SetEventNumber(iev);
    
-    rd.RequireHeader(fFlagHeader);
-    rd.SelectEvents(fDATEEvType);
+    rd->RequireHeader(fFlagHeader);
+    rd->SelectEvents(fDATEEvType);
  
-    digSDD->SetRawReaderDate(&rd);
-    digSPD->SetRawReaderDate(&rd);
-    digSSD->SetRawReaderDate(&rd);
+    digSDD->SetRawReader(rd);
+    digSPD->SetRawReader(rd);
+    digSSD->SetRawReader(rd);
     
     if(fLoader->TreeD() == 0x0) fLoader->MakeTree("D");
 
@@ -277,9 +245,11 @@ void AliITSBeamTestDigitizer::ExecDigitization(){
     digSDD->SetTree(treeD);
     digSPD->SetTree(treeD);
     
-    digSSD->SetBeamTest(fBt);
-    digSDD->SetBeamTest(fBt);
-    digSPD->SetBeamTest(fBt);
+    AliITSgeom* geom = fLoader->GetITSgeom();
+
+    digSSD->SetITSgeom(geom);
+    digSDD->SetITSgeom(geom);
+    digSPD->SetITSgeom(geom);
     
     digSSD->SetITSEventHeader(itsh);
     digSDD->SetITSEventHeader(itsh);
@@ -301,12 +271,13 @@ void AliITSBeamTestDigitizer::ExecDigitization(){
     delete digitsSDD;
     delete digitsSSD;
 
-   }while(rd.NextEvent());
+   }while(rd->NextEvent());
 
+  
   fRunLoader->WriteHeader("OVERWRITE");
   fRunLoader->WriteRunLoader("OVERWRITE");
 
+  delete rd;
   fLoader->UnloadDigits();
   fLoader->UnloadRawClusters();
   fRunLoader->UnloadHeader();