// 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 "AliRawReaderRoot.h"
-#include "TGeoManager.h"
-#include "TGeoMaterial.h"
-#include "TGeoMedium.h"
-#include "TGeoVolume.h"
-#include <TVirtualMC.h>
-//#include <TGeant3.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();
SetOptDate();
- fBt=0;
- fPeriod=kNov04;
}
//_____________________________________________________________
- 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 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");
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");
- if(strcmp(gMC->GetName(),"TGeant3")) {
- Fatal("Init","TGeant3 should be instantiated in advance");
- return;
- }
- 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;
- SetOptDate();
-
+ 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;
}
else rd = new AliRawReaderRoot(fRawdataFileName,fEvIn);
AliHeader* header = fRunLoader->GetHeader();
-
Int_t iev=fEvIn-1;
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);