X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDdigitsManager.cxx;h=6a6e339e17587193c18f5ea2039f9e185fc00b75;hb=85d2ee8d3c6f05e0e72c8896a94b71451022ff0c;hp=1976eca103c3c13a802c7a4282e0f308d5c69f95;hpb=77ad13f4e8d25c7e7995ddae7f6fc09c73de4e03;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDdigitsManager.cxx b/TRD/AliTRDdigitsManager.cxx index 1976eca103c..6a6e339e175 100644 --- a/TRD/AliTRDdigitsManager.cxx +++ b/TRD/AliTRDdigitsManager.cxx @@ -31,6 +31,8 @@ #include "AliTRDarrayADC.h" #include "AliTRDarraySignal.h" #include "AliTRDdigit.h" +#include "AliTRDdigitsParam.h" +#include "AliTRDSimParam.h" #include "AliTRDgeometry.h" #include "AliTRDSignalIndex.h" @@ -50,25 +52,25 @@ AliTRDdigitsManager::AliTRDdigitsManager(Bool_t rawRec) ,fHasSDigits(0) ,fSignalIndexes(NULL) ,fUseDictionaries(kTRUE) - ,fTreeD(0) - ,fBranch(0) ,fDets(AliTRDgeometry::Ndet()) ,fRawRec(rawRec) + ,fDigitsParam(0) { // // Default constructor // - if(fRawRec) + if (fRawRec) { - fDets=1; - fRawRec=kTRUE; + fDets = 1; + fRawRec = kTRUE; } for (Int_t iDict = 0; iDict < kNDict; iDict++) { fDict[iDict] = NULL; - } + } + } //_____________________________________________________________________________ @@ -80,10 +82,9 @@ AliTRDdigitsManager::AliTRDdigitsManager(const AliTRDdigitsManager &m) ,fHasSDigits(m.fHasSDigits) ,fSignalIndexes(NULL) ,fUseDictionaries(kTRUE) - ,fTreeD(m.fTree) - ,fBranch(m.fBranch) ,fDets(m.fDets) ,fRawRec(m.fRawRec) + ,fDigitsParam(NULL) { // // AliTRDdigitsManager copy constructor @@ -123,6 +124,12 @@ AliTRDdigitsManager::~AliTRDdigitsManager() fSignalIndexes = NULL; } + if (fDigitsParam) + { + delete fDigitsParam; + fDigitsParam = NULL; + } + } //_____________________________________________________________________________ @@ -150,15 +157,16 @@ void AliTRDdigitsManager::Copy(TObject &m) const ((AliTRDdigitsManager &) m).fEvent = fEvent; ((AliTRDdigitsManager &) m).fHasSDigits = fHasSDigits; - ((AliTRDdigitsManager &) m).fDigits = fDigits; - for(Int_t i=0; iDelete(); delete fDigits; } fDigits = new TObjArray(fDets); for (Int_t index = 0; index < fDets; index++) - fDigits->AddAt(new AliTRDarraySignal(),index); + { + fDigits->AddAt(new AliTRDarraySignal(),index); + } } else { - if(fDigits) + if (fDigits) { fDigits->Delete(); delete fDigits; } fDigits = new TObjArray(fDets); - for (Int_t index = 0; index < fDets;index++) - fDigits->AddAt(new AliTRDarrayADC(),index); + for (Int_t index = 0; index < fDets; index++) + { + fDigits->AddAt(new AliTRDarrayADC(),index); + } } if (fUseDictionaries) { - for(Int_t iDict = 0; iDict < kNDict; iDict++) - if(fDict[iDict]) - { - fDict[iDict]->Delete(); - delete fDict[iDict]; - } - for(Int_t iDict = 0; iDict < kNDict; iDict++) - fDict[iDict] = new TObjArray(fDets); - for (Int_t iDict = 0; iDict < kNDict; iDict++) - for (Int_t index = 0; index < fDets; index++) - fDict[iDict]->AddAt(new AliTRDarrayDictionary(),index); + { + if (fDict[iDict]) + { + fDict[iDict]->Delete(); + delete fDict[iDict]; + } + fDict[iDict] = new TObjArray(fDets); + for (Int_t index = 0; index < fDets; index++) + { + fDict[iDict]->AddAt(new AliTRDarrayDictionary(),index); + } + } } - if(fSignalIndexes) + if (fSignalIndexes) { fSignalIndexes->Delete(); delete fSignalIndexes; } fSignalIndexes = new TObjArray(fDets); - for (Int_t i = 0; i < fDets; i++) - fSignalIndexes->AddLast(new AliTRDSignalIndex()); + for (Int_t i = 0; i < fDets; i++) + { + fSignalIndexes->AddLast(new AliTRDSignalIndex()); + } + + if (fDigitsParam) + { + delete fDigitsParam; + } + fDigitsParam = new AliTRDdigitsParam(); } //_____________________________________________________________________________ -void AliTRDdigitsManager::ResetArrays() +void AliTRDdigitsManager::ClearArrays(Int_t det) { // // Reset the data arrays // - if (fDigits) - { - fDigits->Delete(); - delete fDigits; - } + Int_t recoDet = fRawRec ? 0 : det; + if (fHasSDigits) { - fDigits = new TObjArray(fDets); - for (Int_t index = 0; index < fDets; index++) - fDigits->AddAt(new AliTRDarraySignal(),index); + ((AliTRDarraySignal*)fDigits->At(recoDet))->Reset(); } else { - fDigits = new TObjArray(fDets); - for (Int_t index = 0; index < fDets; index++) - fDigits->AddAt(new AliTRDarrayADC(),index); + ((AliTRDarrayADC*)fDigits->At(recoDet))->ConditionalReset((AliTRDSignalIndex*)fSignalIndexes->At(recoDet)); } - - for (Int_t iDict = 0; iDict < kNDict; iDict++) - { - if (fDict[iDict]) - { - fDict[iDict]->Delete(); - delete fDict[iDict]; - fDict[iDict]=NULL; - } - } - if (fUseDictionaries) - { - for(Int_t iDict = 0; iDict < kNDict; iDict++) - fDict[iDict] = new TObjArray(fDets); - - for (Int_t iDict = 0; iDict < kNDict; iDict++) - for (Int_t index = 0; index < fDets; index++) - fDict[iDict]->AddAt(new AliTRDarrayDictionary(),index); - } - - if(fSignalIndexes) - { - fSignalIndexes->Delete(); - delete fSignalIndexes; - } - fSignalIndexes = new TObjArray(fDets); - for (Int_t i = 0; i < fDets; i++) - fSignalIndexes->AddLast(new AliTRDSignalIndex()); -} - -//_____________________________________________________________________________ -void AliTRDdigitsManager::ResetArrays(Int_t det) -{ - - Int_t recoDet = fRawRec ? 0 : det; - - RemoveDigits(recoDet); - RemoveDictionaries(recoDet); - RemoveIndexes(recoDet); - - if (fHasSDigits) - fDigits->AddAt(new AliTRDarraySignal(),recoDet); - else - fDigits->AddAt(new AliTRDarrayADC(),recoDet); if (fUseDictionaries) { for (Int_t iDict = 0; iDict < kNDict; iDict++) - fDict[iDict]->AddAt(new AliTRDarrayDictionary(),recoDet); + { + ((AliTRDarrayDictionary*)fDict[iDict]->At(recoDet))->Reset(); + } } - fSignalIndexes->AddAt(new AliTRDSignalIndex(),recoDet); + ((AliTRDSignalIndex*)fSignalIndexes->At(recoDet))->ResetContent(); + } //_____________________________________________________________________________ @@ -343,15 +316,18 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree * const tree) // Make the branch for the digits if (fDigits) { - if(fHasSDigits) + if (fHasSDigits) { const AliTRDarraySignal *kDigits = (AliTRDarraySignal *) fDigits->At(0); if (kDigits) { if (!fTree) return kFALSE; AliDebug(1,"Making branch for SDigits!\n"); - TBranch* branch = fTree->GetBranch("TRDdigits"); - if (!branch) fTree->Branch("TRDdigits","AliTRDarraySignal",&kDigits,buffersize,99); + TBranch *branch = fTree->GetBranch("TRDdigits"); + if (!branch) + { + fTree->Branch("TRDdigits","AliTRDarraySignal",&kDigits,buffersize,99); + } AliDebug(1,"Making branch TRDdigits\n"); } else @@ -360,15 +336,18 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree * const tree) } } - if(!fHasSDigits) + if (!fHasSDigits) { const AliTRDarrayADC *kDigits = (AliTRDarrayADC *) fDigits->At(0); if (kDigits) { if (!fTree) return kFALSE; AliDebug(1,"Making branch for Digits!\n"); - TBranch* branch = fTree->GetBranch("TRDdigits"); - if (!branch) fTree->Branch("TRDdigits","AliTRDarrayADC",&kDigits,buffersize,99); + TBranch *branch = fTree->GetBranch("TRDdigits"); + if (!branch) + { + fTree->Branch("TRDdigits","AliTRDarrayADC",&kDigits,buffersize,99); + } AliDebug(1,"Making branch TRDdigits\n"); } else @@ -377,10 +356,12 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree * const tree) } } - } + } else { + status = kFALSE; + } if (fUseDictionaries) @@ -397,8 +378,11 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree * const tree) { if (!fTree) return kFALSE; AliDebug(2,"Making branch for dictionary!\n"); - TBranch* branch = fTree->GetBranch(branchname); - if (!branch) fTree->Branch(branchname,"AliTRDarrayDictionary",&kDictionary,buffersize,99); + TBranch *branch = fTree->GetBranch(branchname); + if (!branch) + { + fTree->Branch(branchname,"AliTRDarrayDictionary",&kDictionary,buffersize,99); + } AliDebug(1,Form("Making branch %s\n",branchname)); } else @@ -412,7 +396,19 @@ Bool_t AliTRDdigitsManager::MakeBranch(TTree * const tree) } } } - + + if (fDigitsParam) + { + const AliTRDdigitsParam *kDigitsParam = fDigitsParam; + if (!fTree) return kFALSE; + TBranch *branch = fTree->GetBranch("TRDdigitsParam"); + if (!branch) + { + fTree->Branch("TRDdigitsParam","AliTRDdigitsParam",&kDigitsParam,buffersize,99); + } + AliDebug(1,"Making branch AliTRDdigitsParam\n"); + } + return status; } @@ -437,25 +433,31 @@ Bool_t AliTRDdigitsManager::ReadDigits(TTree * const tree) CreateArrays(); } - status = LoadArray(fDigits,"TRDdigits",fTree); + status = LoadArrayDigits(); if (fUseDictionaries) { - for (Int_t iDict = 0; iDict < kNDict; iDict++) + status = LoadArrayDict(); + if (status == kFALSE) { - Char_t branchname[15]; - sprintf(branchname,"TRDdictionary%d",iDict); - status = LoadArrayDict(fDict[iDict],branchname,fTree); - if (status == kFALSE) - { - fUseDictionaries = kFALSE; - AliWarning("Unable to load dict arrays. Will not use them.\n"); - break; - } - } + fUseDictionaries = kFALSE; + AliWarning("Unable to load dict arrays. Will not use them.\n"); + } + } + + if (!LoadDigitsParam()) { + AliWarning("Could not read digits parameter."); + if (fDigitsParam) { + delete fDigitsParam; } + AliWarning(Form("Create default version of digits parameter (NTimeBin=%d).\n" + ,AliTRDSimParam::Instance()->GetNTimeBins())); + fDigitsParam = new AliTRDdigitsParam(); + fDigitsParam->SetNTimeBinsAll(AliTRDSimParam::Instance()->GetNTimeBins()); + fDigitsParam->SetADCbaselineAll(AliTRDSimParam::Instance()->GetADCbaseline()); + } - return kTRUE; + return status; } @@ -463,30 +465,29 @@ Bool_t AliTRDdigitsManager::ReadDigits(TTree * const tree) Bool_t AliTRDdigitsManager::WriteDigits() { // - // Writes out the TRD-digits and the dictionaries + // Writes out the TRD-digits, the dictionaries and the digitsPaam // - // Store the contents of the detector array in the tree - - if (!StoreArray(fDigits,"TRDdigits",fTree)) + if (!StoreArrayDigits()) { - AliError("Error while storing digits in branch TRDdigits\n"); + AliError("Error while storing digits\n"); return kFALSE; } if (fUseDictionaries) { - for (Int_t iDict = 0; iDict < kNDict; iDict++) + if (!StoreArrayDict()) { - Char_t branchname[15]; - sprintf(branchname,"TRDdictionary%d",iDict); - if (!StoreArrayDict(fDict[iDict],branchname,fTree)) - { - AliError(Form("Error while storing dictionary in branch %s\n",branchname)); - return kFALSE; - } + AliError("Error while storing dictionaries in branch\n"); + return kFALSE; } } + + if (!StoreDigitsParam()) + { + AliError("Error while storing digitsParam\n"); + return kFALSE; + } // Write the new tree to the output file fTree->AutoSave(); @@ -553,7 +554,7 @@ AliTRDarrayADC *AliTRDdigitsManager::GetDigits(Int_t det) const // Returns the digits array for one detector // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; if (!fDigits) { @@ -562,8 +563,8 @@ AliTRDarrayADC *AliTRDdigitsManager::GetDigits(Int_t det) const if (!fHasSDigits) { - ((AliTRDarrayADC *) fDigits->At(RecoDet))->SetNdet(det); - return (AliTRDarrayADC *) fDigits->At(RecoDet); + ((AliTRDarrayADC *) fDigits->At(recoDet))->SetNdet(det); + return (AliTRDarrayADC *) fDigits->At(recoDet); } else { @@ -580,7 +581,7 @@ AliTRDarraySignal *AliTRDdigitsManager::GetSDigits(Int_t det) const // Returns the sdigits array for one detector // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; if (!fDigits) { @@ -590,8 +591,8 @@ AliTRDarraySignal *AliTRDdigitsManager::GetSDigits(Int_t det) const if (fHasSDigits) { - ((AliTRDarraySignal *) fDigits->At(RecoDet))->SetNdet(det); - return (AliTRDarraySignal *) fDigits->At(RecoDet); + ((AliTRDarraySignal *) fDigits->At(recoDet))->SetNdet(det); + return (AliTRDarraySignal *) fDigits->At(recoDet); } else { @@ -609,15 +610,15 @@ AliTRDarrayDictionary *AliTRDdigitsManager::GetDictionary(Int_t det // Returns the dictionary for one detector // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; if (fUseDictionaries == kFALSE) { return 0x0; } - ((AliTRDarrayDictionary *) fDigits->At(RecoDet))->SetNdet(det); - return (AliTRDarrayDictionary *) fDict[i]->At(RecoDet); + ((AliTRDarrayDictionary *) fDigits->At(recoDet))->SetNdet(det); + return (AliTRDarrayDictionary *) fDict[i]->At(recoDet); } @@ -644,9 +645,9 @@ AliTRDSignalIndex *AliTRDdigitsManager::GetIndexes(Int_t det) // Returns indexes of active pads // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; - return (AliTRDSignalIndex *) fSignalIndexes->At(RecoDet); + return (AliTRDSignalIndex *) fSignalIndexes->At(recoDet); } @@ -657,18 +658,18 @@ void AliTRDdigitsManager::RemoveDigits(Int_t det) // Clear memory at det for Digits // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; - if (fDigits->At(RecoDet)) + if (fDigits->At(recoDet)) { if (fHasSDigits) { - AliTRDarraySignal *arr = (AliTRDarraySignal *) fDigits->RemoveAt(RecoDet); + AliTRDarraySignal *arr = (AliTRDarraySignal *) fDigits->RemoveAt(recoDet); delete arr; } else { - AliTRDarrayADC *arr = (AliTRDarrayADC *) fDigits->RemoveAt(RecoDet); + AliTRDarrayADC *arr = (AliTRDarrayADC *) fDigits->RemoveAt(recoDet); delete arr; } } @@ -682,7 +683,7 @@ void AliTRDdigitsManager::RemoveDictionaries(Int_t det) // Clear memory // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; if (fUseDictionaries == kFALSE) { @@ -691,9 +692,9 @@ void AliTRDdigitsManager::RemoveDictionaries(Int_t det) for (Int_t i = 0; i < kNDict; i++) { - if (fDict[i]->At(RecoDet)) + if (fDict[i]->At(recoDet)) { - AliTRDarrayDictionary *arr = (AliTRDarrayDictionary *) fDict[i]->RemoveAt(RecoDet); + AliTRDarrayDictionary *arr = (AliTRDarrayDictionary *) fDict[i]->RemoveAt(recoDet); delete arr; } } @@ -707,17 +708,16 @@ void AliTRDdigitsManager::RemoveIndexes(Int_t det) // Clear memory // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; - if (fSignalIndexes->At(RecoDet)) + if (fSignalIndexes->At(recoDet)) { - AliTRDSignalIndex *arr = (AliTRDSignalIndex *) fSignalIndexes->RemoveAt(RecoDet); + AliTRDSignalIndex *arr = (AliTRDSignalIndex *) fSignalIndexes->RemoveAt(recoDet); delete arr; } } - //_____________________________________________________________________________ void AliTRDdigitsManager::ClearIndexes(Int_t det) { @@ -725,9 +725,9 @@ void AliTRDdigitsManager::ClearIndexes(Int_t det) // Clear memory // - Int_t RecoDet = fRawRec ? 0 : det; + Int_t recoDet = fRawRec ? 0 : det; - ((AliTRDSignalIndex *) fSignalIndexes->At(RecoDet))->ClearAll(); + ((AliTRDSignalIndex *) fSignalIndexes->At(recoDet))->ClearAll(); } @@ -754,7 +754,7 @@ Bool_t AliTRDdigitsManager::BuildIndexes(Int_t det) digits = (AliTRDarrayADC *) GetDigits(det); } - //digits should be expanded by now!!! + // digits should be expanded by now!!! if (digits->GetNtime() > 0) { digits->Expand(); @@ -799,58 +799,52 @@ Bool_t AliTRDdigitsManager::BuildIndexes(Int_t det) } //_____________________________________________________________________________ -Bool_t AliTRDdigitsManager::LoadArray(TObjArray * const object - , const Char_t *branchname - , TTree * const tree) +Bool_t AliTRDdigitsManager::LoadArrayDigits() { // - // Loads all detectors of the array from the branch of - // the digits tree - // Adapted from code of the class AliTRDsegmentArray + // Loads the (s-)digits arrays for all detectors // - fTreeD = tree; - - if (!fTreeD) + if (!fTree) { AliError("Digits tree is not defined\n"); return kFALSE; } + Bool_t status = kTRUE; + // Get the branch - fBranch = fTreeD->GetBranch(branchname); - if (!fBranch) + TBranch *branch = fTree->GetBranch("TRDdigits"); + if (!branch) { - AliError(Form("Branch %s is not defined\n",branchname)); + AliError("Branch TRDdigits is not defined\n"); return kFALSE; } // Loop through all detectors and read them from the tree - Bool_t status = kTRUE; for (Int_t iDet = 0; iDet < fDets; iDet++) { - if(fHasSDigits) + if (fHasSDigits) { - AliTRDarraySignal *dataArray = (AliTRDarraySignal *) object->At(iDet); + AliTRDarraySignal *dataArray = (AliTRDarraySignal *) fDigits->At(iDet); if (!dataArray) { status = kFALSE; break; } - - fBranch->SetAddress(&dataArray); - fBranch->GetEntry(iDet); + branch->SetAddress(&dataArray); + branch->GetEntry(iDet); } else { - AliTRDarrayADC *dataArray = (AliTRDarrayADC *) object->At(iDet); + AliTRDarrayADC *dataArray = (AliTRDarrayADC *) fDigits->At(iDet); if (!dataArray) { status = kFALSE; - break; + break; } - fBranch->SetAddress(&dataArray); - fBranch->GetEntry(iDet); + branch->SetAddress(&dataArray); + branch->GetEntry(iDet); } } @@ -859,63 +853,94 @@ Bool_t AliTRDdigitsManager::LoadArray(TObjArray * const object } //________________________________________________________________________________________________ -Bool_t AliTRDdigitsManager::LoadArrayDict(TObjArray * const object - , const Char_t *branchname - , TTree * const tree) +Bool_t AliTRDdigitsManager::LoadArrayDict() { // - // Loads all detectors of the array from the branch of - // the dictionary tree - // Adapted from code of the class AliTRDsegmentArray + // Loads dictionary arrays for all detectors // - fTreeD = tree; + if (!fTree) + { + AliError("Digits tree is not defined\n"); + return kFALSE; + } + + Bool_t status = kTRUE; - if (!fTreeD) + for (Int_t iDict = 0; iDict < kNDict; iDict++) + { + + // Get the branch + Char_t branchname[15]; + sprintf(branchname,"TRDdictionary%d",iDict); + TBranch *branch = fTree->GetBranch(branchname); + if (!branch) + { + AliError(Form("Branch %s is not defined\n",branchname)); + return kFALSE; + } + + // Loop through all detectors and read them from the tree + for (Int_t iDet = 0; iDet < fDets; iDet++) + { + AliTRDarrayDictionary *dataArray = (AliTRDarrayDictionary *) fDict[iDict]->At(iDet); + if (!dataArray) + { + status = kFALSE; + break; + } + branch->SetAddress(&dataArray); + branch->GetEntry(iDet); + } + + } + + return status; + +} + +//_____________________________________________________________________________ +Bool_t AliTRDdigitsManager::LoadDigitsParam() +{ + // + // Loads the digits parameter object from the digits tree + // + + if (!fTree) { AliError("Digits tree is not defined\n"); return kFALSE; } // Get the branch - fBranch = fTreeD->GetBranch(branchname); - if (!fBranch) + TBranch *branch = fTree->GetBranch("TRDdigitsParam"); + if (!branch) { - AliError(Form("Branch %s is not defined\n",branchname)); + AliError("Branch TRDdigitsParam is not defined\n"); return kFALSE; } - // Loop through all detectors and read them from the tree - Bool_t status = kTRUE; - for (Int_t iDet = 0; iDet < fDets; iDet++) + // Read the parameter object + AliTRDdigitsParam *digitsParam = fDigitsParam; + if (!digitsParam) { - AliTRDarrayDictionary *dataArray = (AliTRDarrayDictionary *) object->At(iDet); - if (!dataArray) - { - status = kFALSE; - break; - } - fBranch->SetAddress(&dataArray); - fBranch->GetEntry(iDet); + return kFALSE; } - return status; + branch->SetAddress(&digitsParam); + branch->GetEntry(); + + return kTRUE; } //_____________________________________________________________________________ -Bool_t AliTRDdigitsManager::StoreArray(TObjArray * const array1 - , const Char_t *branchname - , TTree * const tree) +Bool_t AliTRDdigitsManager::StoreArrayDigits() { // - // Stores all the detectors of the array in the branch of - // the digits tree - // Adapted from code of the class AliTRDsegmentArray + // Stores the digit arrays for all detectors // - fTree = tree; - if (!fTree) { AliError("Digits tree is not defined\n"); @@ -923,10 +948,10 @@ Bool_t AliTRDdigitsManager::StoreArray(TObjArray * const array1 } // Get the branch - fBranch = fTree->GetBranch(branchname); - if (!fBranch) + TBranch *branch = fTree->GetBranch("TRDdigits"); + if (!branch) { - AliError(Form("Branch %s is not defined\n",branchname)); + AliError("Branch TRDdigits is not defined\n"); return kFALSE; } @@ -936,25 +961,25 @@ Bool_t AliTRDdigitsManager::StoreArray(TObjArray * const array1 { if (fHasSDigits) { - const AliTRDarraySignal *kDataArray = (AliTRDarraySignal *) array1->At(iDet); + const AliTRDarraySignal *kDataArray = (AliTRDarraySignal *) fDigits->At(iDet); if (!kDataArray) { status = kFALSE; break; } - fBranch->SetAddress(&kDataArray); - fBranch->Fill(); + branch->SetAddress(&kDataArray); + branch->Fill(); } else { - const AliTRDarrayADC *kDataArray = (AliTRDarrayADC *) array1->At(iDet); + const AliTRDarrayADC *kDataArray = (AliTRDarrayADC *) fDigits->At(iDet); if (!kDataArray) { status = kFALSE; break; } - fBranch->SetAddress(&kDataArray); - fBranch->Fill(); + branch->SetAddress(&kDataArray); + branch->Fill(); } } @@ -963,18 +988,58 @@ Bool_t AliTRDdigitsManager::StoreArray(TObjArray * const array1 } //_____________________________________________________________________________ -Bool_t AliTRDdigitsManager::StoreArrayDict(TObjArray * const array3 - , const Char_t *branchname - , TTree * const tree) +Bool_t AliTRDdigitsManager::StoreArrayDict() { // - // Stores all the dictionary arrays of the detectors of the array in the branch of - // the dictionary tree - // Adapted from code of the class AliTRDsegmentArray + // Stores the dictionary arrays for all detectors // - // AliDebug(1,"Storing Arrays of Dictionary"); - fTree = tree; + if (!fTree) + { + AliError("Digits tree is not defined\n"); + return kFALSE; + } + + Bool_t status = kTRUE; + + for (Int_t iDict = 0; iDict < kNDict; iDict++) + { + + // Get the branch + Char_t branchname[15]; + sprintf(branchname,"TRDdictionary%d",iDict); + TBranch *branch = fTree->GetBranch(branchname); + if (!branch) + { + AliError(Form("Branch %s is not defined\n",branchname)); + return kFALSE; + } + + // Loop through all detectors and fill them into the tree + for (Int_t iDet = 0; iDet < fDets; iDet++) + { + const AliTRDarrayDictionary *kDataArray = (AliTRDarrayDictionary *) fDict[iDict]->At(iDet); + if (!kDataArray) + { + status = kFALSE; + break; + } + branch->SetAddress(&kDataArray); + branch->Fill(); + } + + } + + return status; + +} + +//_____________________________________________________________________________ +Bool_t AliTRDdigitsManager::StoreDigitsParam() +{ + // + // Stores the digits parameter object from the digits tree + // if (!fTree) { @@ -983,27 +1048,23 @@ Bool_t AliTRDdigitsManager::StoreArrayDict(TObjArray * const array3 } // Get the branch - fBranch = fTree->GetBranch(branchname); - if (!fBranch) + TBranch *branch = fTree->GetBranch("TRDdigitsParam"); + if (!branch) { - AliError(Form("Branch %s is not defined\n",branchname)); + AliError("Branch TRDdigitsParam is not defined\n"); return kFALSE; } - // Loop through all detectors and fill them into the tree - Bool_t status = kTRUE; - for (Int_t iDet = 0; iDet < fDets; iDet++) + // Fill the digits object in the tree + const AliTRDdigitsParam *kDigitsParam = fDigitsParam; + if (!kDigitsParam) { - const AliTRDarrayDictionary *kDataArray = (AliTRDarrayDictionary *) array3->At(iDet); - if (!kDataArray) - { - status = kFALSE; - break; - } - fBranch->SetAddress(&kDataArray); - fBranch->Fill(); + return kFALSE; } + branch->SetAddress(&kDigitsParam); + branch->Fill(); - return status; + return kTRUE; } +