// 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";
//_____________________________________________________________
-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);
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;
}
AliITSBeamTestDigitizer::~AliITSBeamTestDigitizer(){
//Destructor
- if(fBt) delete fBt;
+ // if(fBt) delete fBt;
if(fLoader) delete fLoader;
if(fHeader) delete fHeader;
}
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;
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");
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);
delete digitsSDD;
delete digitsSSD;
- }while(rd.NextEvent());
+ }while(rd->NextEvent());
-
+
fRunLoader->WriteHeader("OVERWRITE");
fRunLoader->WriteRunLoader("OVERWRITE");
+ delete rd;
fLoader->UnloadDigits();
fLoader->UnloadRawClusters();
fRunLoader->UnloadHeader();