//____________________________________________________________________________
AliTRDQADataMakerSim::AliTRDQADataMakerSim() :
- AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kTRD), "TRD Quality Assurance Data Maker")
+ AliQADataMakerSim(AliQAv1::GetDetName(AliQAv1::kTRD), "TRD Quality Assurance Data Maker"),
+ fTmpHits(NULL)
{
//
// Default constructor
//____________________________________________________________________________
AliTRDQADataMakerSim::AliTRDQADataMakerSim(const AliTRDQADataMakerSim& qadm) :
- AliQADataMakerSim()
+ AliQADataMakerSim(),
+ fTmpHits(NULL)
{
//
// Copy constructor
}
+//____________________________________________________________________________
+AliTRDQADataMakerSim::~AliTRDQADataMakerSim()
+{
+ if (fTmpHits) {
+ fTmpHits->Clear() ;
+ delete fTmpHits ;
+ }
+}
+
//____________________________________________________________________________
void AliTRDQADataMakerSim::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list)
{
}
//____________________________________________________________________________
-void AliTRDQADataMakerSim::MakeHits(TClonesArray * hits)
+void AliTRDQADataMakerSim::MakeHits()
{
//
// Make QA data from Hits
//
-
- TIter next(hits);
+
+ TIter next(fHitsArray);
AliTRDhit * hit;
while ( (hit = dynamic_cast<AliTRDhit *>(next())) ) {
TBranch *branch = hitTree->GetBranch("TRD");
if (!CheckPointer(branch, "TRD hits branch")) return;
-
+
Int_t nhits = (Int_t)(hitTree->GetTotBytes()/sizeof(AliTRDhit));
- TClonesArray *hits = new TClonesArray("AliTRDhit", nhits+1000);
- TClonesArray *tmp = new TClonesArray("AliTRDhit", 1000);
- branch->SetAddress(&tmp);
-
- Int_t index = 0;
+ if (fHitsArray)
+ fHitsArray->Clear() ;
+ else
+ fHitsArray = new TClonesArray("AliTRDhit", nhits+1000);
+
+ //Int_t index = 0;
Int_t nEntries = (Int_t)branch->GetEntries();
for(Int_t i = 0; i < nEntries; i++) {
branch->GetEntry(i);
- Int_t nHits = (Int_t)tmp->GetEntries();
- for(Int_t j=0; j<nHits; j++) {
- AliTRDhit *hit = (AliTRDhit*)tmp->At(j);
- new((*hits)[index++]) AliTRDhit(*hit);
- }
+ MakeHits();
+ fHitsArray->Clear() ;
}
-
- tmp->Delete();
- delete tmp;
- MakeHits(hits);
- hits->Delete();
- delete hits;
-
}
//____________________________________________________________________________
-void AliTRDQADataMakerSim::MakeDigits(TClonesArray * digits)
+void AliTRDQADataMakerSim::MakeDigits()
{
//
// Makes data from Digits
//
- TIter next(digits) ;
+ if (!fDigitsArray)
+ return ;
+
+ TIter next(fDigitsArray) ;
AliTRDdigit * digit ;
// Info("Make digits", "From the arrya");
//
// Makes data from digits tree
//
-
// Info("Make digits", "From a tree");
AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager();
Int_t nTbins = digitsIn->GetNtime();
for(Int_t row = 0; row < nRows; row++)
- for(Int_t col = 0; col < nCols; col++)
- for(Int_t time = 0; time < nTbins; time++)
- {
- Float_t signal = digitsIn->GetData(row,col,time);
- if (signal < 1) continue;
- histDet->Fill(i);
- histTime->Fill(time);
- histSignal->Fill(signal);
- }
-
- //delete digitsIn;
- }
+ for(Int_t col = 0; col < nCols; col++)
+ for(Int_t time = 0; time < nTbins; time++)
+ {
+ Float_t signal = digitsIn->GetData(row,col,time);
+ if (signal < 1) continue;
+ histDet->Fill(i);
+ histTime->Fill(time);
+ histSignal->Fill(signal);
+ }
+
+ //delete digitsIn;
+ }
delete digitsManager;
}
//____________________________________________________________________________
-void AliTRDQADataMakerSim::MakeSDigits(TClonesArray * sdigits)
+void AliTRDQADataMakerSim::MakeSDigits()
{
//
// Makes data from Digits
//
- TIter next(sdigits) ;
+ if (!fSDigitsArray)
+ return ;
+
+ TIter next(fSDigitsArray) ;
AliTRDdigit * digit ;
while ( (digit = dynamic_cast<AliTRDdigit *>(next())) ) {
GetDigitsData(0)->Fill(digit->GetDetector());
//
// Makes data from SDigits
//
-
+ // Check id histograms already created for this Event Specie
+ if ( ! GetSDigitsData(0) )
+ InitSDigits() ;
+
AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager();
digitsManager->SetSDigits(kTRUE);
digitsManager->CreateArrays();