]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSBeamTestDigitizer.cxx
Change to take into account the different format of in subversion when compared...
[u/mrichter/AliRoot.git] / ITS / AliITSBeamTestDigitizer.cxx
index 789cd7bed9eee7354b677937f2568bdfc0bc38eb..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 "AliITSBeamTest.h"
 #include "AliITSBeamTestDigSDD.h"
 #include "AliITSBeamTestDigSPD.h"
 #include "AliITSBeamTestDigSSD.h"
 #include "AliITSBeamTestDigitizer.h"
 #include "AliRawReaderDate.h"
+#include "AliRawReaderRoot.h"
 
-
-const TString AliITSBeamTestDigitizer::fgkDefaultDigitsFileName="ITSbt.Digits.root";  
+const TString AliITSBeamTestDigitizer::fgkDefaultDigitsFileName="ITS.Digits.root";  
 
 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;
-  SetBeamTestPeriod();
+  SetOptDate();
 } 
 
 //_____________________________________________________________
-  AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title):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 
   //
-  Init();
-  fEvIn=0;
-  fEvFin=0;
-  fDATEEvType=7;
-  fFlagHeader=kTRUE;
-  fRunNumber=-1;
-  SetBeamTestPeriod();
+  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(filename);
  } 
 
 //_____________________________________________________________
-  AliITSBeamTestDigitizer::AliITSBeamTestDigitizer(const Text_t* name, const Text_t* title, Int_t run):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 
   //
-  Init();
-  fEvIn=0;
-  fEvFin=0;
-  fDATEEvType=7;
-  fFlagHeader=kTRUE;
-  fRunNumber=run;
-  SetBeamTestPeriod();
+  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(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();
-  fBt = new AliITSBeamTest("ITS","ITS beam test");
-  fBt->SetDefaults();
-  gAlice->AddModule(fBt);
-  fRunLoader->AddLoader(fBt);
-  fLoader = (AliITSLoader*)fRunLoader->GetLoader("ITSLoader");
-  fRunLoader->MakeTree("E");  
-
-  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);
@@ -122,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=(AliITSBeamTestDigitizer &bt){
-    // 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==&bt) return *this;
-    Error("operator=","You are not allowed to make a copy of the AliITSBeamTestDigitizer");
-    exit(1);
-    return *this; //fake return
+AliITSBeamTestDigitizer& AliITSBeamTestDigitizer::operator=(const AliITSBeamTestDigitizer &source){
+    // Assignment operator. 
+  this->~AliITSBeamTestDigitizer();
+  new(this) AliITSBeamTestDigitizer(source);
+  return *this;
 }
 
 
@@ -161,9 +168,9 @@ AliITSBeamTestDigitizer& AliITSBeamTestDigitizer::operator=(AliITSBeamTestDigiti
 AliITSBeamTestDigitizer::~AliITSBeamTestDigitizer(){
 
   //Destructor
-  if(fBt) delete fBt;
+  //  if(fBt) delete fBt;
   if(fLoader) delete fLoader;
-  if(fRunLoader) delete fRunLoader;
+  if(fHeader) delete fHeader;
 } 
 
 
@@ -189,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;
 
   
@@ -208,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");
 
@@ -222,30 +232,32 @@ void AliITSBeamTestDigitizer::ExecDigitization(){
     // Make branches outside the dig-classes
 
     TClonesArray* digitsSPD = new TClonesArray("AliITSdigitSPD",1000);
-    treeD->Branch("ITSDigitSPD",&digitsSPD);
+    treeD->Branch("ITSDigitsSPD",&digitsSPD);
  
     TClonesArray* digitsSDD = new TClonesArray("AliITSdigitSDD",1000);
-    treeD->Branch("ITSDigitSDD",&digitsSDD);
+    treeD->Branch("ITSDigitsSDD",&digitsSDD);
    
     TClonesArray* digitsSSD = new TClonesArray("AliITSdigitSSD",1000);
-    treeD->Branch("ITSDigitSSD",&digitsSSD);
+    treeD->Branch("ITSDigitsSSD",&digitsSSD);
 
 
     digSSD->SetTree(treeD);
     digSDD->SetTree(treeD);
     digSPD->SetTree(treeD);
+    
+    AliITSgeom* geom = fLoader->GetITSgeom();
 
-    digSSD->SetBeamTest(fBt);
-    digSDD->SetBeamTest(fBt);
-    digSPD->SetBeamTest(fBt);
-
+    digSSD->SetITSgeom(geom);
+    digSDD->SetITSgeom(geom);
+    digSPD->SetITSgeom(geom);
+    
     digSSD->SetITSEventHeader(itsh);
     digSDD->SetITSEventHeader(itsh);
     digSPD->SetITSEventHeader(itsh);
 
     digSDD->SetBtPeriod(GetBeamTestPeriod());
-    digSDD->SetThreshold(16);
-
+    if(GetBeamTestPeriod()==1)digSDD->SetThreshold(16);
+    else digSDD->SetThreshold(0);
     ExecuteTask(0);  
 
     header->SetEventNrInRun(iev);
@@ -259,13 +271,17 @@ 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();
+
   
 }