#include "AliPMDsdigit.h"
#include "AliPMDdigit.h"
#include "AliPMDCalibData.h"
+#include "AliPMDPedestal.h"
#include "AliPMDDigitizer.h"
fPMDHit(0),
fPMD(0),
fPMDLoader(0),
- fCalibData(GetCalibData()),
+ fCalibGain(GetCalibGain()),
+ fCalibPed(GetCalibPed()),
fSDigits(0),
fDigits(0),
fCell(0),
}
}
-
}
//____________________________________________________________________________
AliPMDDigitizer::AliPMDDigitizer(const AliPMDDigitizer& digitizer):
fPMDHit(0),
fPMD(0),
fPMDLoader(0),
- fCalibData(GetCalibData()),
+ fCalibGain(GetCalibGain()),
+ fCalibPed(GetCalibPed()),
fSDigits(0),
fDigits(0),
fCell(0),
fPMDHit(0),
fPMD(0),
fPMDLoader(0),
- fCalibData(GetCalibData()),
+ fCalibGain(GetCalibGain()),
+ fCalibPed(GetCalibPed()),
fSDigits(new TClonesArray("AliPMDsdigit", 1000)),
fDigits(new TClonesArray("AliPMDdigit", 1000)),
fCell(0),
{
adc = 0.;
}
- AddDigit(trno,detno,ism,jrow,kcol,adc);
+
+ // Pedestal Decalibration
+ Int_t pedmeanrms =
+ fCalibPed->GetPedMeanRms(idet,ism,jrow,kcol);
+ Int_t pedrms1 = (Int_t) pedmeanrms%1000;
+ Float_t pedrms = (Float_t)pedrms1/10.;
+ Float_t pedmean =
+ (Float_t) (pedmeanrms - pedrms1)/1000.0;
+ //printf("%f %f\n",pedmean, pedrms);
+ if (adc > 0.)
+ {
+ adc += (pedmean + 3.0*pedrms);
+ AddDigit(trno,detno,ism,jrow,kcol,adc);
+ }
}
} // column loop
} // row loop
MeV2ADC(edep,adc);
+
// To decalibrte the adc values
//
Float_t gain1 = Gain(det,smn,irow,icol);
{
adc = 0.;
}
+ // Pedestal Decalibration
+ Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,irow,icol);
+ Int_t pedrms1 = (Int_t) pedmeanrms%1000;
+ Float_t pedrms = (Float_t)pedrms1/10.;
+ Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
+ //printf("%f %f\n",pedmean, pedrms);
+ if(adc > 0.)
+ {
+ adc += (pedmean + 3.0*pedrms);
+ AddDigit(trno,det,smn,irow,icol,adc);
+ }
- AddDigit(trno,det,smn,irow,icol,adc);
}
treeD->Fill();
ResetDigit();
if (deltaE > 0.)
{
MeV2ADC(deltaE,adc);
+
//
- // To decalibrte the adc values
+ // Gain decalibration
//
Float_t gain1 = Gain(idet,ism,jrow,kcol);
+
if (gain1 != 0.)
{
Int_t adcDecalib = (Int_t)(adc/gain1);
{
adc = 0.;
}
+ // Pedestal Decalibration
+ Int_t pedmeanrms =
+ fCalibPed->GetPedMeanRms(idet,ism,jrow,kcol);
+ Int_t pedrms1 = (Int_t) pedmeanrms%1000;
+ Float_t pedrms = (Float_t)pedrms1/10.;
+ Float_t pedmean =
+ (Float_t) (pedmeanrms - pedrms1)/1000.0;
+ //printf("%f %f\n",pedmean, pedrms);
+ if (adc > 0.)
+ {
+ adc += (pedmean + 3.0*pedrms);
+ AddDigit(trno,detno,ism,jrow,kcol,adc);
+ }
- AddDigit(trno,detno,ism,jrow,kcol,adc);
}
} // column loop
} // row loop
//cout<<" I am here in gain "<<fCalibData<< "smn,row, col "<<smn
//<<" "<<row<<" "<<col<<endl;
- if(!fCalibData) {
+ if(!fCalibGain) {
AliError("No calibration data loaded from CDB!!!");
return 1;
}
Float_t GainFact;
- GainFact = fCalibData->GetGainFact(det,smn,row,col);
+ GainFact = fCalibGain->GetGainFact(det,smn,row,col);
return GainFact;
}
//----------------------------------------------------------------------
-AliPMDCalibData* AliPMDDigitizer::GetCalibData() const
+AliPMDCalibData* AliPMDDigitizer::GetCalibGain() const
{
// The run number will be centralized in AliCDBManager,
// you don't need to set it here!
// Added this method by ZA
// Cleaned up by Alberto
- AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Data");
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Gain");
if(!entry) AliFatal("Calibration object retrieval failed!");
return calibdata;
}
+//----------------------------------------------------------------------
+AliPMDPedestal* AliPMDDigitizer::GetCalibPed() const
+{
+ // The run number will be centralized in AliCDBManager,
+ // you don't need to set it here!
+
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Ped");
+
+ if(!entry) AliFatal("Pedestal object retrieval failed!");
+
+ AliPMDPedestal *pedestal=0;
+ if (entry) pedestal = (AliPMDPedestal*) entry->GetObject();
+
+ if (!pedestal) AliFatal("No pedestal data from calibration database !");
+
+ return pedestal;
+}