fNADCPreSho = 0; // number of channels in Pre Shower ADC
fTimeThreshold = 0.0; //Means 1 MeV in terms of SDigits amplitude
fManager = 0 ;
+ fSplitFile= 0 ;
SetName(name) ;
SetTitle(headerFile) ;
fManager = 0 ; // We work in the standalong mode
+ fSplitFile= 0 ;
Init() ;
{
// dtor
+ if (fSplitFile)
+ if ( fSplitFile->IsOpen() )
+ fSplitFile->Close() ;
+
}
+
//____________________________________________________________________________
void AliEMCALDigitizer::Reset() {
//sets current event number to the first simulated event
fDigitsInRun += gime->Digits()->GetEntriesFast() ;
}
+ if (fSplitFile)
+ if ( fSplitFile->IsOpen() )
+ fSplitFile->Close() ;
+
if(strstr(option,"tim")){
gBenchmark->Stop("EMCALDigitizer");
cout << "AliEMCALDigitizer:" << endl ;
treeD = fManager->GetTreeD() ;
else {
if (!gAlice->TreeD() )
- gAlice->MakeTree("D");
+ gAlice->MakeTree("D",fSplitFile);
treeD = gAlice->TreeD();
}
TBranch * digitizerBranch = treeD->Branch("AliEMCALDigitizer", "AliEMCALDigitizer", &d,bufferSize,splitlevel);
digitizerBranch->SetTitle(GetName());
- treeD->Fill() ;
+ digitsBranch->Fill() ;
+ digitizerBranch->Fill() ;
treeD->AutoSave() ;
}
}
//__________________________________________________________________
-void AliEMCALDigitizer::SetSplitFile(const TString splitFileName) const
+void AliEMCALDigitizer::SetSplitFile(const TString splitFileName)
{
// Diverts the Digits in a file separate from the hits file
}
TDirectory * cwd = gDirectory ;
- TFile * splitFile = gAlice->InitTreeFile("D",splitFileName.Data());
- splitFile->cd() ;
- gAlice->Write();
+ if ( !(gAlice->GetTreeDFileName() == splitFileName) ) {
+ if (gAlice->GetTreeDFile() )
+ gAlice->GetTreeDFile()->Close() ;
+ }
+
+ fSplitFile = gAlice->InitTreeFile("D",splitFileName.Data());
+ fSplitFile->cd() ;
+ if ( !fSplitFile->Get("gAlice") )
+ gAlice->Write();
TTree *treeE = gAlice->TreeE();
if (!treeE) {
}
// copy TreeE
- AliHeader *header = new AliHeader();
- treeE->SetBranchAddress("Header", &header);
- treeE->SetBranchStatus("*",1);
- TTree *treeENew = treeE->CloneTree();
- treeENew->Write();
-
+ if ( !fSplitFile->Get("TreeE") ) {
+ AliHeader *header = new AliHeader();
+ treeE->SetBranchAddress("Header", &header);
+ treeE->SetBranchStatus("*",1);
+ TTree *treeENew = treeE->CloneTree();
+ treeENew->Write();
+ }
+
// copy AliceGeom
- TGeometry *AliceGeom = static_cast<TGeometry*>(cwd->Get("AliceGeom"));
- if (!AliceGeom) {
- cerr << "ERROR: AliEMCALDigitizer::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
- abort() ;
+ if ( !fSplitFile->Get("AliceGeom") ) {
+ TGeometry *AliceGeom = static_cast<TGeometry*>(cwd->Get("AliceGeom"));
+ if (!AliceGeom) {
+ cerr << "ERROR: AliEMCALDigitizer::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
+ abort() ;
+ }
+ AliceGeom->Write();
}
- AliceGeom->Write();
+
+ gAlice->MakeTree("D",fSplitFile);
cwd->cd() ;
- gAlice->MakeTree("D",splitFile);
cout << "INFO: AliEMCALDigitizer::SetSPlitMode -> Digits will be stored in " << splitFileName.Data() << endl ;
}
void SetPinNoise(Float_t PinNoise ) {fPinNoise = PinNoise;}
void SetSDigitsBranch(const char* file) ;
- void SetSplitFile(const TString splitFileName = "EMCAL.Digits.root") const ;
+ void SetSplitFile(const TString splitFileName = "EMCAL.Digits.root") ;
AliEMCALDigitizer & operator = (const AliEMCALDigitizer & rvalue) {
Float_t fADCchannelPreSho ; // width of one ADC channel in Pre Shower (GeV)
Float_t fADCpedestalPreSho ; //
Int_t fNADCPreSho ; // number of channels in Pre Shower ADC
+ TFile * fSplitFile ; //! file in which Digits will eventually be stored
ClassDef(AliEMCALDigitizer,1) // description
fTimeThreshold = 0.001*10000000 ; //Means 1 MeV in terms of SDigits amplitude
fManager = 0 ; // We work in the standalong mode
+ fSplitFile= 0 ;
}
//____________________________________________________________________________
SetName(name) ;
SetTitle(headerFile) ;
fManager = 0 ; // We work in the standalong mode
+ fSplitFile= 0 ;
Init() ;
}
{
// dtor
+ if (fSplitFile)
+ if ( fSplitFile->IsOpen() )
+ fSplitFile->Close() ;
}
fDigitsInRun += gime->Digits()->GetEntriesFast() ;
}
+ if (fSplitFile)
+ if ( fSplitFile->IsOpen() )
+ fSplitFile->Close() ;
+
if(strstr(option,"tim")){
gBenchmark->Stop("PHOSDigitizer");
cout << "AliPHOSDigitizer:" << endl ;
}
//__________________________________________________________________
-void AliPHOSDigitizer::SetSplitFile(const TString splitFileName) const
+void AliPHOSDigitizer::SetSplitFile(const TString splitFileName)
{
// Diverts the Digits in a file separate from the hits file
}
TDirectory * cwd = gDirectory ;
- TFile * splitFile = gAlice->InitTreeFile("D",splitFileName.Data());
- splitFile->cd() ;
- if ( !splitFile->Get("gAlice") )
+ if ( !(gAlice->GetTreeDFileName() == splitFileName) ) {
+ if (gAlice->GetTreeDFile() )
+ gAlice->GetTreeDFile()->Close() ;
+ }
+
+ fSplitFile = gAlice->InitTreeFile("D",splitFileName.Data());
+ fSplitFile->cd() ;
+ if ( !fSplitFile->Get("gAlice") )
gAlice->Write();
TTree *treeE = gAlice->TreeE();
}
// copy TreeE
- if ( !splitFile->Get("TreeE") ) {
+ if ( !fSplitFile->Get("TreeE") ) {
AliHeader *header = new AliHeader();
treeE->SetBranchAddress("Header", &header);
treeE->SetBranchStatus("*",1);
}
// copy AliceGeom
- if ( !splitFile->Get("AliceGeom") ) {
+ if ( !fSplitFile->Get("AliceGeom") ) {
TGeometry *AliceGeom = static_cast<TGeometry*>(cwd->Get("AliceGeom"));
if (!AliceGeom) {
cerr << "ERROR: AliPHOSDigitizer::SetSplitFile -> AliceGeom was not found in the input file "<<endl;
AliceGeom->Write();
}
+ gAlice->MakeTree("D",fSplitFile);
cwd->cd() ;
- gAlice->MakeTree("D",splitFile);
cout << "INFO: AliPHOSDigitizer::SetSPlitMode -> Digits will be stored in " << splitFileName.Data() << endl ;
}
treeD = fManager->GetTreeD() ;
else {
if (!gAlice->TreeD() )
- gAlice->MakeTree("D");
+ gAlice->MakeTree("D", fSplitFile);
treeD = gAlice->TreeD();
}
digitizerBranch->SetTitle(GetName());
digitsBranch->Fill() ;
+ digitizerBranch->Fill() ;
treeD->AutoSave() ;
}
void MixWith(const char* HeaderFile) ; // Add another one file to mix
void Print(Option_t* option)const ;
void Reset() ; //restarts starts event processing from 0 event(s)
- void SetSplitFile(const TString splitFileName = "PHOS.Digits.root") const ;
+ void SetSplitFile(const TString splitFileName = "PHOS.Digits.root") ;
void SetSDigitsBranch(const char* file) ;
AliPHOSDigitizer & operator = (const AliPHOSDigitizer & rvalue) {
Float_t fADCchanelCpv ; // width of one ADC channel in CPV 'popugais'
Float_t fADCpedestalCpv ; //
Int_t fNADCcpv ; // number of channels in CPV ADC
+ TFile * fSplitFile ; //! file in which Digits will eventually be stored
ClassDef(AliPHOSDigitizer,1) // description