X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EMCAL%2FAliEMCALLoader.cxx;h=663f6b95dadf9922cbbf3aa3c8b51fd926973671;hb=c61fe3b42c41346be77a49b3cf114355985f1a0f;hp=f3f09e5c114002e6f440b570f3447c7b55b48eb4;hpb=9cff45093393299f5e9869202de8718235f4a373;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALLoader.cxx b/EMCAL/AliEMCALLoader.cxx index f3f09e5c114..663f6b95dad 100644 --- a/EMCAL/AliEMCALLoader.cxx +++ b/EMCAL/AliEMCALLoader.cxx @@ -40,6 +40,7 @@ ////////////////////////////////////////////////////////////////////////////// // --- ROOT system --- +#include "TMath.h" #include "TTree.h" // --- Standard library --- @@ -50,15 +51,22 @@ #include "AliCDBLocal.h" #include "AliCDBStorage.h" #include "AliCDBManager.h" +#include "AliCDBEntry.h" #include "AliEMCALHit.h" ClassImp(AliEMCALLoader) const TString AliEMCALLoader::fgkECARecPointsBranchName("EMCALECARP");//Name for branch with ECA Reconstructed Points AliEMCALCalibData* AliEMCALLoader::fgCalibData = 0; //calibation data +AliEMCALRecParam * AliEMCALLoader::fgRecParam = 0; //reconstruction parameters //____________________________________________________________________________ AliEMCALLoader::AliEMCALLoader() + : fDebug(0), + fHits(0), + fDigits(0), + fSDigits(0), + fRecPoints(0) { //Default constructor for EMCAL Loader Class @@ -70,8 +78,13 @@ AliEMCALLoader::AliEMCALLoader() } //____________________________________________________________________________ -AliEMCALLoader::AliEMCALLoader(const Char_t *detname,const Char_t *eventfoldername): - AliLoader(detname,eventfoldername) +AliEMCALLoader::AliEMCALLoader(const Char_t *detname,const Char_t *eventfoldername) + : AliLoader(detname,eventfoldername), + fDebug(0), + fHits(0), + fDigits(0), + fSDigits(0), + fRecPoints(0) { //Specific constructor for EMCAL Loader class @@ -83,16 +96,33 @@ AliEMCALLoader::AliEMCALLoader(const Char_t *detname,const Char_t *eventfolderna } //____________________________________________________________________________ -AliEMCALLoader::AliEMCALLoader(const AliEMCALLoader & obj):AliLoader(obj) +AliEMCALLoader::AliEMCALLoader(const Char_t *name, TFolder *topfolder) + : AliLoader(name,topfolder), + fDebug(0), + fHits(0), + fDigits(0), + fSDigits(0), + fRecPoints(0) { - //copy ctor + //Specific constructor for EMCAL Loader class - fDebug = obj.fDebug; - fHits = obj.fHits; - fDigits = obj.fDigits; - fSDigits = obj.fSDigits; - fRecPoints = obj.fRecPoints; + fDebug=0; + fHits = new TClonesArray("AliEMCALHit"); + fDigits = new TClonesArray("AliEMCALDigit"); + fSDigits = new TClonesArray("AliEMCALDigit"); + fRecPoints = new TObjArray(); +} +//____________________________________________________________________________ +AliEMCALLoader::AliEMCALLoader(const AliEMCALLoader & obj) + : AliLoader(obj), + fDebug(obj.fDebug), + fHits(obj.fHits), + fDigits(obj.fDigits), + fSDigits(obj.fSDigits), + fRecPoints(obj.fRecPoints) +{ + //copy ctor } //____________________________________________________________________________ @@ -107,7 +137,10 @@ AliEMCALLoader::~AliEMCALLoader() TreeS()->SetBranchAddress(fDetectorName,0); if (TreeR()) TreeR()->SetBranchAddress(fgkECARecPointsBranchName,0); - delete fHits; + if (fHits) { + fHits->Delete(); + delete fHits; + } delete fDigits; delete fSDigits; delete fRecPoints; @@ -116,15 +149,42 @@ AliEMCALLoader::~AliEMCALLoader() //____________________________________________________________________________ AliEMCALCalibData* AliEMCALLoader::CalibData() { - // Check if the instance of AliEMCALCalibData exists, and return it + // Check if the instance of AliEMCALCalibData exists, if not, create it if + // the OCDB is available, and finally return it. - if( !(AliCDBManager::Instance()->IsDefaultStorageSet()) ) - fgCalibData=0x0; + if(!fgCalibData && (AliCDBManager::Instance()->IsDefaultStorageSet())) + { + AliCDBEntry *entry = (AliCDBEntry*) + AliCDBManager::Instance()->Get("EMCAL/Calib/Data"); + if (entry) fgCalibData = (AliEMCALCalibData*) entry->GetObject(); + } + + if(!fgCalibData) + AliFatal("Calibration parameters not found in CDB!"); return fgCalibData; } +//____________________________________________________________________________ +AliEMCALRecParam* AliEMCALLoader::RecParam() +{ + // Check if the instance of AliEMCALRecParam exists, if not, create it if + // the OCDB is available, and finally return it. + + if(!fgRecParam && (AliCDBManager::Instance()->IsDefaultStorageSet())) { + AliCDBEntry *entry = (AliCDBEntry*) + AliCDBManager::Instance()->Get("EMCAL/Config/RecParam/"); + if (entry) fgRecParam = (AliEMCALRecParam*) entry->GetObject(); + } + + if(!fgRecParam) + AliWarning("Recostruction parameters not found in CDB!"); + + return fgRecParam; + +} + //____________________________________________________________________________ Int_t AliEMCALLoader::CalibrateRaw(Double_t energy, Int_t module, Int_t column, Int_t row) @@ -172,36 +232,57 @@ Int_t AliEMCALLoader::GetEvent() Int_t nEnt = treeH->GetEntries(); // TreeH has array of hits for every primary fHits->Clear(); Int_t index = 0; - TClonesArray *temp_arr = new TClonesArray("AliEMCALHit"); - treeH->SetBranchAddress(fDetectorName,&temp_arr); + TClonesArray *tempArr = 0x0; + TBranch * branchH = treeH->GetBranch(fDetectorName); + branchH->SetAddress(&tempArr); for (Int_t iEnt = 0; iEnt < nEnt; iEnt++) { treeH->GetEntry(iEnt); - Int_t nHit = temp_arr->GetEntriesFast(); + Int_t nHit = tempArr->GetEntriesFast(); for (Int_t iHit = 0; iHit < nHit; iHit++) { - new ((*fHits)[index]) AliEMCALHit(*((AliEMCALHit*)temp_arr->At(iHit))); + new ((*fHits)[index]) AliEMCALHit(*((AliEMCALHit*)tempArr->At(iHit))); index++; } } + branchH->ResetAddress(); + if (tempArr) { + tempArr->Delete(); + delete tempArr; + } } // SDigits TTree *treeS = TreeS(); if (treeS) { - treeS->SetBranchAddress(fDetectorName,&fSDigits); + TBranch * branchS = treeS->GetBranch(fDetectorName); + branchS->ResetAddress(); + if (fSDigits) { + fSDigits->Clear(); + } + branchS->SetAddress(&fSDigits); treeS->GetEvent(0); } // Digits TTree *treeD = TreeD(); if (treeD) { - treeD->SetBranchAddress(fDetectorName,&fDigits); + TBranch * branchD = treeD->GetBranch(fDetectorName); + branchD->ResetAddress(); + if (fDigits) { + fDigits->Clear(); + } + branchD->SetAddress(&fDigits); treeD->GetEvent(0); } // RecPoints TTree *treeR = TreeR(); if (treeR) { - treeR->SetBranchAddress(fgkECARecPointsBranchName,&fRecPoints); + TBranch * branchR = treeR->GetBranch(fgkECARecPointsBranchName); + branchR->ResetAddress(); + if (fRecPoints) { + fRecPoints->Clear(); + } + branchR->SetAddress(&fRecPoints); treeR->GetEvent(0); }