fGeom(NULL),
fCalibData(NULL),
fCaloPed(NULL),
- fADCchannelECA(0.),fADCpedestalECA(0.),
+ fADCchannelECA(0.),fADCpedestalECA(0.), fTimeECA(0.),
fTimeMin(-1.),fTimeMax(1.),fTimeCut(1.),
fDefaultInit(kFALSE),fToUnfold(kFALSE),
fNumberOfECAClusters(0), fECAClusteringThreshold(0.),
fGeom(geometry),
fCalibData(NULL),
fCaloPed(NULL),
- fADCchannelECA(0.),fADCpedestalECA(0.),
+ fADCchannelECA(0.),fADCpedestalECA(0.), fTimeECA(0.),
fTimeMin(-1.),fTimeMax(1.),fTimeCut(1.),
fDefaultInit(kFALSE),fToUnfold(kFALSE),
fNumberOfECAClusters(0), fECAClusteringThreshold(0.),
fGeom(geometry),
fCalibData(calib),
fCaloPed(caloped),
- fADCchannelECA(0.),fADCpedestalECA(0.),
+ fADCchannelECA(0.),fADCpedestalECA(0.), fTimeECA(0.),
fTimeMin(-1.),fTimeMax(1.),fTimeCut(1.),
fDefaultInit(kFALSE),fToUnfold(kFALSE),
fNumberOfECAClusters(0), fECAClusteringThreshold(0.),
//Already deleted in AliEMCALReconstructor.
if(fClusterUnfolding) delete fClusterUnfolding;
+
+ // make sure we delete the rec points array
+ DeleteRecPoints();
+
+ //Delete digits array
+ DeleteDigits();
+
+}
+
+//____________________________________________________________________________
+void AliEMCALClusterizer::DeleteRecPoints()
+{
+ // free the cluster array
+ if (fRecPoints)
+ {
+ AliDebug(2, "Deleting fRecPoints.");
+ fRecPoints->Delete();
+ delete fRecPoints;
+ fRecPoints = 0;
+ }
}
//____________________________________________________________________________
-Float_t AliEMCALClusterizer::Calibrate(const Float_t amp, const Float_t time, const Int_t absId)
+void AliEMCALClusterizer::DeleteDigits()
{
- // Convert digitized amplitude into energy.
- // Calibration parameters are taken from calibration data base for raw data,
- // or from digitizer parameters for simulated data.
+ // free the digits array
+ if (fDigitsArr)
+ {
+ AliDebug(2, "Deleting fDigitsArr.");
+ fDigitsArr->Clear("C");
+ delete fDigitsArr;
+ fDigitsArr = 0;
+ }
+}
+//____________________________________________________________________________
+void AliEMCALClusterizer::Calibrate(Float_t & amp, Float_t & time, const Int_t absId)
+{
+ // Convert digitized amplitude into energy, calibrate time
+ // Calibration parameters are taken from OCDB : OCDB/EMCAL/Calib/Data
+
+ //Check if time is too large or too small, indication of a noisy channel, remove in this case
+ if(time > fTimeMax || time < fTimeMin) {
+ amp = 0 ;
+ time = 0 ;
+ return ;
+ }
+
//Return energy with default parameters if calibration is not available
- if (!fCalibData&&!fCaloPed) {
+ if (!fCalibData && !fCaloPed) {
if (fIsInputCalibrated == kTRUE)
{
AliDebug(10, Form("Input already calibrated!"));
- return amp;
- }
-
- return -fADCpedestalECA + amp * fADCchannelECA ;
+ return ;
+ }
+ else{
+ AliFatal("OCDB calibration and bad map parameters are not available");
+ return;
+ }
}
if (fGeom==0)
//assert(0); // GCB: This aborts reconstruction of raw simulations
//where simulation had more SM than default geometry,
//change to return 0, to avoid aborting good generations.
- return 0;
+ amp = 0;
+ time = 0;
+ return ;
}
fGeom->GetCellPhiEtaIndexInSModule(iSupMod,nModule,nIphi, nIeta,iphi,ieta);
Int_t channelStatus = (Int_t)(fCaloPed->GetDeadMap(iSupMod))->GetBinContent(ieta,iphi);
if(channelStatus == AliCaloCalibPedestal::kHot || channelStatus == AliCaloCalibPedestal::kDead) {
AliDebug(2,Form("Tower from SM %d, ieta %d, iphi %d is BAD : status %d !!!",iSupMod,ieta,iphi, channelStatus));
- return 0;
+ amp = 0 ;
+ time = 0 ;
+ return ;
}
}
- //Check if time is too large or too small, indication of a noisy channel, remove in this case
- if(time > fTimeMax || time < fTimeMin) return 0;
- if (fIsInputCalibrated)
+ if (fIsInputCalibrated || !fCalibData)
{
AliDebug(10, Form("Input already calibrated!"));
- return amp;
+ return ;
}
fADCchannelECA = fCalibData->GetADCchannel (iSupMod,ieta,iphi);
fADCpedestalECA = fCalibData->GetADCpedestal(iSupMod,ieta,iphi);
-
- return -fADCpedestalECA + amp * fADCchannelECA ;
+ fTimeECA = fCalibData->GetTimeChannel(iSupMod,ieta,iphi);
+
+ time -= fTimeECA ;
+ amp = amp * fADCchannelECA - fADCpedestalECA ;
+
}
//____________________________________________________________________________
fTimeCut = recParam->GetTimeCut();
fTimeMin = recParam->GetTimeMin();
fTimeMax = recParam->GetTimeMax();
-
+
+ //For NxN
+ SetNRowDiff(recParam->GetNRowDiff());
+ SetNColDiff(recParam->GetNColDiff());
+
AliDebug(1,Form("Reconstruction parameters: fECAClusteringThreshold=%.3f GeV, fECAW=%.3f, fMinECut=%.3f GeV, "
"fToUnfold=%d, fECALocMaxCut=%.3f GeV, fTimeCut=%e s,fTimeMin=%e s,fTimeMax=%e s",
fECAClusteringThreshold,fECAW0,fMinECut,fToUnfold,fECALocMaxCut,fTimeCut, fTimeMin, fTimeMax));