X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSSDigitizer.cxx;h=4f4c8c828a7a4d3eef0d4706d8ca2ff826be40e7;hb=657f22946a7fcde694141c26721cab09ab1750fb;hp=0fe839c786a99ed2b9226bb600337f57418d0d12;hpb=c093f031721405956dfb97d009f575e2982eb451;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSSDigitizer.cxx b/PHOS/AliPHOSSDigitizer.cxx index 0fe839c786a..4f4c8c828a7 100644 --- a/PHOS/AliPHOSSDigitizer.cxx +++ b/PHOS/AliPHOSSDigitizer.cxx @@ -77,34 +77,49 @@ ClassImp(AliPHOSSDigitizer) //____________________________________________________________________________ - AliPHOSSDigitizer::AliPHOSSDigitizer():TTask("","") -{ + AliPHOSSDigitizer::AliPHOSSDigitizer():TTask("","") { // ctor - fA = 0; - fB = 10000000.; - fPrimThreshold = 0.01 ; - fSDigitsInRun = 0 ; - fSplitFile = 0 ; + InitParameters() ; + fDefaultInit = kTRUE ; } //____________________________________________________________________________ AliPHOSSDigitizer::AliPHOSSDigitizer(const char * headerFile, const char * sDigitsTitle):TTask(sDigitsTitle, headerFile) { // ctor - fA = 0; - fB = 10000000.; - fPrimThreshold = 0.01 ; - fSDigitsInRun = 0 ; - fSplitFile = 0 ; + InitParameters() ; Init(); + fDefaultInit = kFALSE ; } //____________________________________________________________________________ AliPHOSSDigitizer::~AliPHOSSDigitizer() { - if (fSplitFile) - if ( fSplitFile->IsOpen() ) - fSplitFile->Close() ; + // dtor + // fDefaultInit = kTRUE if SDigitizer created by default ctor (to get just the parameters) + + + if (!fDefaultInit) { + AliPHOSGetter * gime = AliPHOSGetter::GetInstance() ; + + // remove the task from the folder list + gime->RemoveTask("S",GetName()) ; + + TString name(GetName()) ; + if (! name.IsNull() ) + name.Remove(name.Index(":")) ; + + // remove the Hits from the folder list + gime->RemoveObjects("H",name) ; + + // remove the SDigits from the folder list + gime->RemoveObjects("S", name) ; + + // Delete gAlice + gime->CloseFile() ; + + } + fSplitFile = 0 ; } //____________________________________________________________________________ @@ -119,7 +134,7 @@ void AliPHOSSDigitizer::Init() if( strcmp(GetTitle(), "") == 0 ) SetTitle("galice.root") ; - + AliPHOSGetter * gime = AliPHOSGetter::GetInstance(GetTitle(), GetName()) ; if ( gime == 0 ) { cerr << "ERROR: AliPHOSSDigitizer::Init -> Could not obtain the Getter object !" << endl ; @@ -135,6 +150,16 @@ void AliPHOSSDigitizer::Init() gime->PostSDigitizer(this) ; } +//____________________________________________________________________________ +void AliPHOSSDigitizer::InitParameters() +{ + fA = 0; + fB = 10000000.; + fPrimThreshold = 0.01 ; + fSDigitsInRun = 0 ; + fSplitFile = 0 ; +} + //____________________________________________________________________________ void AliPHOSSDigitizer::Exec(Option_t *option) { @@ -230,7 +255,7 @@ void AliPHOSSDigitizer::Exec(Option_t *option) } if(gAlice->TreeS() == 0) - gAlice->MakeTree("S",fSplitFile); + gAlice->MakeTree("S", fSplitFile); //First list of sdigits Int_t bufferSize = 32000 ; @@ -253,11 +278,6 @@ void AliPHOSSDigitizer::Exec(Option_t *option) } - if (fSplitFile) - if ( fSplitFile->IsOpen() ) - fSplitFile->Close() ; - - if(strstr(option,"tim")){ gBenchmark->Stop("PHOSSDigitizer"); cout << "AliPHOSSDigitizer:" << endl ; @@ -311,8 +331,7 @@ void AliPHOSSDigitizer::SetSplitFile(const TString splitFileName) fSplitFile = gAlice->InitTreeFile("S",splitFileName.Data()); fSplitFile->cd() ; - if ( !fSplitFile->Get("gAlice") ) - gAlice->Write(); + gAlice->Write(0, TObject::kOverwrite); TTree *treeE = gAlice->TreeE(); if (!treeE) { @@ -321,27 +340,25 @@ void AliPHOSSDigitizer::SetSplitFile(const TString splitFileName) } // copy TreeE - if ( !fSplitFile->Get("TreeE") ) { AliHeader *header = new AliHeader(); treeE->SetBranchAddress("Header", &header); treeE->SetBranchStatus("*",1); TTree *treeENew = treeE->CloneTree(); - treeENew->Write(); - } + treeENew->Write(0, TObject::kOverwrite); + // copy AliceGeom - if ( !fSplitFile->Get("AliceGeom") ) { TGeometry *AliceGeom = static_cast(cwd->Get("AliceGeom")); if (!AliceGeom) { cerr << "ERROR: AliPHOSSDigitizer::SetSPlitFile -> AliceGeom was not found in the input file "<Write(); - } + AliceGeom->Write(0, TObject::kOverwrite); - cwd->cd() ; gAlice->MakeTree("S",fSplitFile); - cout << "INFO: AliPHOSSDigitizer::SetSPlitFile -> SDigits will be stored in " << splitFileName.Data() << endl ; + cwd->cd() ; + cout << "INFO: AliPHOSSDigitizer::SetSPlitMode -> SDigits will be stored in " << splitFileName.Data() << endl ; + } //__________________________________________________________________