From 50002f375cce90995858d1cc5b1495d7de694d24 Mon Sep 17 00:00:00 2001 From: cblume Date: Tue, 27 Jul 2010 08:10:51 +0000 Subject: [PATCH] Introduce a member fMcmSim in the digitizer to solve TClonesArray problem (Jochen) --- TRD/AliTRDdigitizer.cxx | 30 +++++++++++++++++------------- TRD/AliTRDdigitizer.h | 3 +++ TRD/AliTRDrawData.cxx | 22 ++++++++++++---------- TRD/AliTRDrawData.h | 2 ++ 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/TRD/AliTRDdigitizer.cxx b/TRD/AliTRDdigitizer.cxx index 48fa7cccc33..583c240e8bb 100644 --- a/TRD/AliTRDdigitizer.cxx +++ b/TRD/AliTRDdigitizer.cxx @@ -82,6 +82,7 @@ AliTRDdigitizer::AliTRDdigitizer() ,fSDigitsManagerList(0) ,fTRD(0) ,fGeo(0) + ,fMcmSim(new AliTRDmcmSim) ,fEvent(0) ,fMasks(0) ,fCompress(kTRUE) @@ -103,6 +104,7 @@ AliTRDdigitizer::AliTRDdigitizer(const Text_t *name, const Text_t *title) ,fSDigitsManagerList(0) ,fTRD(0) ,fGeo(0) + ,fMcmSim(new AliTRDmcmSim) ,fEvent(0) ,fMasks(0) ,fCompress(kTRUE) @@ -125,6 +127,7 @@ AliTRDdigitizer::AliTRDdigitizer(AliRunDigitizer *manager ,fSDigitsManagerList(0) ,fTRD(0) ,fGeo(0) + ,fMcmSim(new AliTRDmcmSim) ,fEvent(0) ,fMasks(0) ,fCompress(kTRUE) @@ -146,6 +149,7 @@ AliTRDdigitizer::AliTRDdigitizer(AliRunDigitizer *manager) ,fSDigitsManagerList(0) ,fTRD(0) ,fGeo(0) + ,fMcmSim(new AliTRDmcmSim) ,fEvent(0) ,fMasks(0) ,fCompress(kTRUE) @@ -167,6 +171,7 @@ AliTRDdigitizer::AliTRDdigitizer(const AliTRDdigitizer &d) ,fSDigitsManagerList(0) ,fTRD(0) ,fGeo(0) + ,fMcmSim(new AliTRDmcmSim) ,fEvent(0) ,fMasks(0) ,fCompress(d.fCompress) @@ -207,6 +212,11 @@ AliTRDdigitizer::~AliTRDdigitizer() fMasks = 0; } + if (fMcmSim) { + delete fMcmSim; + fMcmSim = 0; + } + if (fGeo) { delete fGeo; fGeo = 0; @@ -1926,9 +1936,6 @@ void AliTRDdigitizer::RunDigitalProcessing(Int_t det) AliTRDfeeParam *feeParam = AliTRDfeeParam::Instance(); - //Create and initialize the mcm object - AliTRDmcmSim* mcmfast = new AliTRDmcmSim(); - AliTRDarrayADC *digits = fDigitsManager->GetDigits(det); if (!digits) return; @@ -1938,19 +1945,16 @@ void AliTRDdigitizer::RunDigitalProcessing(Int_t det) { for(Int_t mcm = 0; mcm < 16; mcm++) { - mcmfast->Init(det, rob, mcm); - mcmfast->SetDataByPad(digits, fDigitsManager); - mcmfast->Filter(); + fMcmSim->Init(det, rob, mcm); + fMcmSim->SetDataByPad(digits, fDigitsManager); + fMcmSim->Filter(); if (feeParam->GetTracklet()) { - mcmfast->Tracklet(); - mcmfast->StoreTracklets(); + fMcmSim->Tracklet(); + fMcmSim->StoreTracklets(); } - mcmfast->ZSMapping(); - mcmfast->WriteData(digits); + fMcmSim->ZSMapping(); + fMcmSim->WriteData(digits); } } - - delete mcmfast; - } diff --git a/TRD/AliTRDdigitizer.h b/TRD/AliTRDdigitizer.h index af091731f38..fbbefc2dc75 100644 --- a/TRD/AliTRDdigitizer.h +++ b/TRD/AliTRDdigitizer.h @@ -24,6 +24,7 @@ class AliTRDdigitsManager; class AliTRDgeometry; class AliTRDarraySignal; class AliTRDarrayADC; +class AliTRDmcmSim; class AliTRDdigitizer : public AliDigitizer { @@ -93,6 +94,8 @@ class AliTRDdigitizer : public AliDigitizer { AliTRD *fTRD; //! TRD detector class AliTRDgeometry *fGeo; //! TRD geometry + AliTRDmcmSim *fMcmSim; //! MCM simulation for digital processing + Int_t fEvent; //! Event number Int_t *fMasks; //! Masks for the merging Bool_t fCompress; // Switch to keep only compressed data in memory diff --git a/TRD/AliTRDrawData.cxx b/TRD/AliTRDrawData.cxx index 2dfac77267b..37e4150aa3d 100644 --- a/TRD/AliTRDrawData.cxx +++ b/TRD/AliTRDrawData.cxx @@ -61,6 +61,7 @@ AliTRDrawData::AliTRDrawData() ,fSMindexPos(0) ,fStackindexPos(0) ,fEventCounter(0) + ,fMcmSim(new AliTRDmcmSim) ,fDigitsParam(NULL) { // @@ -84,6 +85,7 @@ AliTRDrawData::AliTRDrawData(const AliTRDrawData &r) ,fSMindexPos(0) ,fStackindexPos(0) ,fEventCounter(0) + ,fMcmSim(new AliTRDmcmSim) ,fDigitsParam(NULL) { // @@ -107,6 +109,8 @@ AliTRDrawData::~AliTRDrawData() fTrackletContainer = NULL; } + delete fMcmSim; + } //_____________________________________________________________________________ @@ -433,8 +437,6 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det AliDebug(1,Form("Producing raw data for sect=%d layer=%d stack=%d side=%d",sect,layer,stack,side)); - AliTRDmcmSim* mcm = new AliTRDmcmSim(); - UInt_t *tempBuffer = buf; // tempBuffer used to write ADC data // different in case of tracklet writing @@ -456,11 +458,11 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det for (Int_t iMcmRB = 0; iMcmRB < fGeo->MCMmax(); iMcmRB++ ) { Int_t iMcm = 16 - 4*(iMcmRB/4 + 1) + (iMcmRB%4); - mcm->Init(det, iRob, iMcm); - mcm->SetData(digits); // no filtering done here (already done in digitizer) + fMcmSim->Init(det, iRob, iMcm); + fMcmSim->SetData(digits); // no filtering done here (already done in digitizer) if (trackletOn) { - mcm->Tracklet(); - Int_t tempNw = mcm->ProduceTrackletStream(&buf[nw], maxSize - nw); + fMcmSim->Tracklet(); + Int_t tempNw = fMcmSim->ProduceTrackletStream(&buf[nw], maxSize - nw); if( tempNw < 0 ) { of += tempNw; nw += maxSize - nw; @@ -469,10 +471,10 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det nw += tempNw; } } - mcm->ZSMapping(); // Calculate zero suppression mapping + fMcmSim->ZSMapping(); // Calculate zero suppression mapping // at the moment it has to be rerun here // Write MCM data to temp. buffer - Int_t tempNw = mcm->ProduceRawStream( &tempBuffer[*tempnw], maxSize - *tempnw, fEventCounter ); + Int_t tempNw = fMcmSim->ProduceRawStream( &tempBuffer[*tempnw], maxSize - *tempnw, fEventCounter ); if ( tempNw < 0 ) { *tempof += tempNw; *tempnw += maxSize - nw; @@ -483,8 +485,6 @@ Int_t AliTRDrawData::ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det } } - delete mcm; - // in case of tracklet writing copy temp data to final buffer if (trackletOn) { if (nw + *tempnw < maxSize) { @@ -574,6 +574,8 @@ AliTRDdigitsManager *AliTRDrawData::Raw2Digits(AliRawReader *rawReader) { det = input.NextChamber(digitsManager,fTrackletContainer); + if (*(fTrackletContainer[0]) > 0 || *(fTrackletContainer[1]) > 0) WriteTracklets(det); + if (det >= 0) { // get... diff --git a/TRD/AliTRDrawData.h b/TRD/AliTRDrawData.h index 27896e71369..564330dbf89 100644 --- a/TRD/AliTRDrawData.h +++ b/TRD/AliTRDrawData.h @@ -24,6 +24,7 @@ class AliTRDgeometry; class AliTRDfeeParam; class AliTRDarrayADC; class AliTRDdigitsParam; +class AliTRDmcmSim; class AliTRDrawData : public TObject { @@ -67,6 +68,7 @@ class AliTRDrawData : public TObject { Int_t fSMindexPos; // Position of SM index word Int_t fStackindexPos; // Position of SM index word UInt_t fEventCounter; // Event counter(starting from 1) + AliTRDmcmSim *fMcmSim; //! MCM simulation for raw data output AliTRDdigitsParam *fDigitsParam; // Digits parameter ClassDef(AliTRDrawData,7) // TRD raw data class -- 2.39.3