X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITS.cxx;h=40be112668bb8dc9d8736acd2e5feb876e5f9784;hb=6ed1b948b376b318a7f8f714e08a0189198e0b9d;hp=08d60fa55b04324b46c362a8e538f87b3104f9d0;hpb=0b5bf101d10f5f9c65df53e3d08db82046c54ba1;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITS.cxx b/ITS/AliITS.cxx index 08d60fa55b0..40be112668b 100644 --- a/ITS/AliITS.cxx +++ b/ITS/AliITS.cxx @@ -91,7 +91,6 @@ the AliITS class. #include "AliITSRawStreamSPD.h" #include "AliITSRawStreamSSD.h" #include "AliITSRawStreamSDD.h" -#include "AliITSresponseSDD.h" #include "AliRawReader.h" #include "AliRun.h" #include "AliLog.h" @@ -100,7 +99,16 @@ the AliITS class. ClassImp(AliITS) //______________________________________________________________________ -AliITS::AliITS() : AliDetector(){ +AliITS::AliITS() : AliDetector(), +fDetTypeSim(0), +fEuclidOut(0), +fOpt("All"), +fIdN(0), +fIdSens(0), +fIdName(0), +fITSmodules(0), +fTiming(kFALSE) +{ // Default initializer for ITS // The default constructor of the AliITS class. In addition to // creating the AliITS class it zeros the variables fIshunt (a member @@ -108,21 +116,56 @@ AliITS::AliITS() : AliDetector(){ // fIdSens, and fIdName. The AliDetector default constructor // is also called. - fEuclidOut=0; - fOpt="All"; - fIdSens=0; - fIdName=0; - fDetTypeSim=0; - fIshunt = 0; // not zeroed in AliDetector. - fHits =0; - fNhits=0; - fITSmodules=0; - // SetDetectors(); // default to fOpt="All". This variable not written out. - SetMarkerColor(kRed); +//PH SetMarkerColor(kRed); +} +//______________________________________________________________________ +AliITS::AliITS(const Char_t *title):AliDetector("ITS",title), +fDetTypeSim(0), +fEuclidOut(0), +fOpt("All"), +fIdN(0), +fIdSens(0), +fIdName(0), +fITSmodules(0), +fTiming(kFALSE) +{ + // The standard Constructor for the ITS class. + // It also zeros the variables + // fIshunt (a member of AliDetector class), fEuclidOut, and zeros + // the pointers fIdSens and fIdName. To help in displaying hits via the + // ROOT macro display.C AliITS also sets the marker color to red. The + // variables passes with this constructor, const char *name and *title, + // are used by the constructor of AliDetector class. See AliDetector + // class for a description of these parameters and its constructor + // functions. + // Inputs: + // Char_t *title Simulation title for the ITS + // Outputs: + // none. + // Return: + // none. + + fHits = new TClonesArray("AliITShit",1560); // from AliDetector + if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits); + //fNhits=0; //done in AliDetector(name,title) + SetDetectors(); // default to fOpt="All". This variable not written out. + fDetTypeSim = new AliITSDetTypeSim(); + //PH SetMarkerColor(kRed); + if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName()); + fDetTypeSim->SetLoader((AliITSLoader*)fLoader); } //______________________________________________________________________ -AliITS::AliITS(const char *name, const char *title):AliDetector(name,title){ +AliITS::AliITS(const char *name, const char *title):AliDetector(name,title), +fDetTypeSim(0), +fEuclidOut(0), +fOpt("All"), +fIdN(0), +fIdSens(0), +fIdName(0), +fITSmodules(0), +fTiming(kFALSE) +{ // The standard Constructor for the ITS class. // It also zeros the variables // fIshunt (a member of AliDetector class), fEuclidOut, and zeros @@ -133,28 +176,15 @@ AliITS::AliITS(const char *name, const char *title):AliDetector(name,title){ // class for a description of these parameters and its constructor // functions. - fEuclidOut=0; - fOpt="All"; - fIdSens=0; - fIdName=0; - fDetTypeSim=0; fHits = new TClonesArray("AliITShit",1560); if(gAlice->GetMCApp()) gAlice->GetMCApp()->AddHitList(fHits); - fNhits=0; - fITSmodules = 0; - - fIshunt = 0; // not zeroed in AliDetector - // Not done in AliDetector. + //fNhits=0; //done in AliDetector(name,title) - fEuclidOut = 0; SetDetectors(); // default to fOpt="All". This variable not written out. - - fIdName = 0; - fIdSens = 0; - + fDetTypeSim = new AliITSDetTypeSim(); - SetMarkerColor(kRed); + //PH SetMarkerColor(kRed); if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName()); fDetTypeSim->SetLoader((AliITSLoader*)fLoader); @@ -192,38 +222,6 @@ AliITS::~AliITS(){ } } //______________________________________________________________________ -AliITS::AliITS(const AliITS &source) : AliDetector(source){ - // Copy constructor. This is a function which is not allowed to be - // done to the ITS. It exits with an error. - // Inputs: - // AliITS &source An AliITS class. - // Outputs: - // none. - // Return: - // none. - - if(this==&source) return; - Error("Copy constructor", - "You are not allowed to make a copy of the AliITS"); - exit(1); -} -//______________________________________________________________________ -AliITS& AliITS::operator=(const AliITS &source){ - // Assignment operator. This is a function which is not allowed to be - // done to the ITS. It exits with an error. - // Inputs: - // AliITS &source An AliITS class. - // Outputs: - // none. - // Return: - // none. - - if(this==&source) return *this; - Error("operator=","You are not allowed to make a copy of the AliITS"); - exit(1); - return *this; //fake return -} -//______________________________________________________________________ AliDigitizer* AliITS::CreateDigitizer(AliRunDigitizer* manager)const{ // Creates the AliITSDigitizer in a standard way for use via AliModule. // This function can not be included in the .h file because of problems @@ -252,26 +250,11 @@ void AliITS::Init(){ // Return: // none. Int_t i; - - SetDefaults(); // Array of TStrings if(gMC) for(i=0;iVolId(fIdName[i]); - WriteGeometry(); } -//______________________________________________________________________ -void AliITS::WriteGeometry(){ - - //Writes ITS geometry on gAlice - - if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName()); - AliRunLoader* rl = fLoader->GetRunLoader(); - rl->CdGAFile(); - AliITSgeom* geom = GetITSgeom(); - geom->Write(); - -} //______________________________________________________________________ void AliITS::SetDefaults(){ @@ -283,7 +266,6 @@ void AliITS::SetDefaults(){ // Return: // none. AliInfoClass("AliITS::Setting Defaults"); - if(!fDetTypeSim) { Error("SetDefaults()","fDetTypeSim is 0!"); return; @@ -362,7 +344,6 @@ void AliITS::MakeBranchS(const char* fl){ sprintf(branchname,"%s",GetName()); if(fLoader->TreeS()){ - if(fDetTypeSim->GetSDigits()==0x0) fDetTypeSim->SetSDigits(new TClonesArray("AliITSpListItem",1000)); TClonesArray* sdig = (TClonesArray*)fDetTypeSim->GetSDigits(); MakeBranchInTree(fLoader->TreeS(),branchname,&sdig,buffersize,fl); } @@ -555,7 +536,7 @@ void AliITS::FillModules(TTree *treeH, Int_t mask) { } //______________________________________________________________________ -void AliITS::InitModules(Int_t size,Int_t &nmodules){ +Bool_t AliITS::InitModules(Int_t size,Int_t &nmodules){ // Initialize the modules array. // Inputs: // Int_t size Size of array of the number of modules to be @@ -573,7 +554,7 @@ void AliITS::InitModules(Int_t size,Int_t &nmodules){ if(!fDetTypeSim) { Error("InitModules","fDetTypeSim is null!"); - return; + return kFALSE; } Int_t nl,indexMAX,index; @@ -581,7 +562,7 @@ void AliITS::InitModules(Int_t size,Int_t &nmodules){ if(size<=0){ // default to using data stored in AliITSgeom if(fDetTypeSim->GetITSgeom()==0) { Error("InitModules","fITSgeom not defined"); - return; + return kFALSE; } // end if fITSgeom==0 nl = fDetTypeSim->GetITSgeom()->GetNlayers(); indexMAX = fDetTypeSim->GetITSgeom()->GetIndexMax(); @@ -598,6 +579,7 @@ void AliITS::InitModules(Int_t size,Int_t &nmodules){ nmodules = size; } // end i size<=0 + return kTRUE; } //______________________________________________________________________ void AliITS::Hits2SDigits(){ @@ -1028,25 +1010,6 @@ void AliITS::AddSumDigit(AliITSpListItem &sdig){ } fDetTypeSim->AddSumDigit(sdig); -} -//______________________________________________________________________ -void AliITS::AddRealDigit(Int_t branch, Int_t *digits){ - // Add a real digit - as coming from data. - // Inputs: - // Int_t id Detector type number. - // Int_t *digits Integer array containing the digits info. See - // AliITSdigit.h - // Outputs: - // none. - // Return: - // none. - - if(!fDetTypeSim) { - Error("AddRealDigit","fDetTypeSim is 0!"); - return; - } - fDetTypeSim->AddRealDigit(branch,digits); - } //______________________________________________________________________ void AliITS::AddSimDigit(Int_t branch, AliITSdigit *d){ @@ -1069,7 +1032,7 @@ void AliITS::AddSimDigit(Int_t branch, AliITSdigit *d){ } //______________________________________________________________________ void AliITS::AddSimDigit(Int_t branch,Float_t phys,Int_t *digits,Int_t *tracks, - Int_t *hits,Float_t *charges){ + Int_t *hits,Float_t *charges, Int_t sigexpanded){ // Add a simulated digit to the list. // Inputs: // Int_t id Detector type number. @@ -1093,7 +1056,7 @@ void AliITS::AddSimDigit(Int_t branch,Float_t phys,Int_t *digits,Int_t *tracks, Error("AddSimDigit","fDetTypeSim is 0!"); return; } - fDetTypeSim->AddSimDigit(branch,phys,digits,tracks,hits,charges); + fDetTypeSim->AddSimDigit(branch,phys,digits,tracks,hits,charges,sigexpanded); } //______________________________________________________________________ @@ -1113,6 +1076,7 @@ void AliITS::Digits2Raw(){ return; } fDetTypeSim->SetTreeAddressD(digits,(Char_t*)GetName()); + AliITSDDLModuleMapSDD* ddlsdd=fDetTypeSim->GetDDLModuleMapSDD(); AliITSDDLRawData rawWriter; //Verbose level @@ -1131,7 +1095,7 @@ void AliITS::Digits2Raw(){ //SILICON DRIFT DETECTOR Info("Digits2Raw", "Formatting raw data for SDD"); - rawWriter.RawDataSDD(digits->GetBranch("ITSDigitsSDD")); + rawWriter.RawDataSDD(digits->GetBranch("ITSDigitsSDD"),ddlsdd); //SILICON STRIP DETECTOR Info("Digits2Raw", "Formatting raw data for SSD"); @@ -1144,8 +1108,8 @@ AliLoader* AliITS::MakeLoader(const char* topfoldername){ //builds ITSgetter (AliLoader type) //if detector wants to use castomized getter, it must overload this method - Info("MakeLoader","Creating AliITSLoader. Top folder is %s.", - topfoldername); + AliDebug(1,Form("Creating AliITSLoader. Top folder is %s.", + topfoldername)); fLoader = new AliITSLoader(GetName(),topfoldername); return fLoader; } @@ -1187,6 +1151,11 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader) // SPD // AliITSsegmentationSPD* segSPD = (AliITSsegmentationSPD*) fDetTypeSim->GetSegmentationModel(0); + if(!segSPD){ + AliWarning("Set AliITS defaults"); + SetDefaults(); + segSPD = (AliITSsegmentationSPD*) fDetTypeSim->GetSegmentationModel(0); + } npx = segSPD->Npx(); Double_t thr, sigma; @@ -1216,6 +1185,8 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader) AliITSsegmentationSDD* segSDD = (AliITSsegmentationSDD*) fDetTypeSim->GetSegmentationModel(1); npx = segSDD->Npx(); AliITSRawStreamSDD inputSDD(rawReader); + AliITSDDLModuleMapSDD* ddlmap=fDetTypeSim->GetDDLModuleMapSDD(); + inputSDD.SetDDLModuleMap(ddlmap); while(1){ Bool_t next = inputSDD.Next(); if (!next) break; @@ -1223,14 +1194,10 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader) Int_t module = inputSDD.GetModuleID(); Int_t anode = inputSDD.GetAnode(); Int_t time = inputSDD.GetTime(); - Int_t signal = inputSDD.GetSignal(); + Int_t signal10 = inputSDD.GetSignal(); Int_t index = npx * anode + time; if (module >= size) continue; - // 8bit -> 10 bit - AliITSresponseSDD *resSDD = (AliITSresponseSDD*) fDetTypeSim->GetResponse(1); - Int_t signal10 = resSDD->Convert8to10(signal); // signal is a 8 bit value (if the compression is active) - last = modA[module]->GetEntries(); TClonesArray& dum = *modA[module]; new (dum[last]) AliITSpListItem(-1, -1, module, index, Double_t(signal10)); @@ -1290,15 +1257,14 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader) //______________________________________________________________________ void AliITS::UpdateInternalGeometry(){ - Info("UpdateInternalGeometry", "Delete ITSgeom and create a new one reading TGeo"); - AliITSInitGeometry *initgeom = new AliITSInitGeometry("AliITSvPPRasymmFMD",2); - AliITSgeom* geom = initgeom->CreateAliITSgeom(); - SetITSgeom(geom); - - if(!fLoader) MakeLoader(AliConfig::GetDefaultEventFolderName()); - AliRunLoader* rl = fLoader->GetRunLoader(); - rl->CdGAFile(); - geom->Write(0,kOverwrite); + //reads new geometry from TGeo +// AliDebug(1,"Delete ITSgeom and create a new one reading TGeo"); + AliITSVersion_t version = (AliITSVersion_t)IsVersion(); + Int_t minor = 0; + if(version==kvPPRasymmFMD) minor=2; // default minor version for this geom. + AliITSInitGeometry initgeom; + AliITSgeom* geom = initgeom.CreateAliITSgeom(version,minor); + SetITSgeom(geom); }