AliPHOSCalibData * AliPHOSRawDigiProducer::fgCalibData = 0 ;
//--------------------------------------------------------------------------------------
-AliPHOSRawDigiProducer::AliPHOSRawDigiProducer():TObject(),
- fEmcMinE(0.),fCpvMinE(0.),fSampleQualityCut(1.),
- fEmcCrystals(0),fGeom(0),fPulseGenerator(0){
-
+AliPHOSRawDigiProducer::AliPHOSRawDigiProducer():
+ TObject(),
+ fEmcMinE(0.),
+ fCpvMinE(0.),
+ fSampleQualityCut(1.),
+ fGlobalAltroOffset(0),
+ fEmcCrystals(0),
+ fGeom(0),
+ fPulseGenerator(0)
+{
+ // Default constructor
}
//--------------------------------------------------------------------------------------
-AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRecoParam* parEmc, const AliPHOSRecoParam* parCpv):TObject(),
- fEmcMinE(0.),fCpvMinE(0.),fSampleQualityCut(1.),fEmcCrystals(0),fGeom(0),fPulseGenerator(0){
-
- if(!parEmc) AliFatal("Reconstruction parameters for EMC not set!");
- if(!parCpv) AliFatal("Reconstruction parameters for CPV not set!");
+AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRecoParam* recoParam):
+ TObject(),
+ fEmcMinE(0.),
+ fCpvMinE(0.),
+ fSampleQualityCut(1.),
+ fGlobalAltroOffset(0),
+ fEmcCrystals(0),
+ fGeom(0),
+ fPulseGenerator(0)
+{
+ // Constructor takes paramerters from recoParam
- fEmcMinE = parEmc->GetMinE();
- fCpvMinE = parCpv->GetMinE();
+ if(!recoParam) AliFatal("Reconstruction parameters are not set!");
- fSampleQualityCut = parEmc->GetSampleQualityCut() ;
+ fEmcMinE = recoParam->GetEMCMinE();
+ fCpvMinE = recoParam->GetCPVMinE();
+ fSampleQualityCut = recoParam->GetEMCSampleQualityCut() ;
+ fGlobalAltroOffset = recoParam->GetGlobalAltroOffset() ;
fGeom=AliPHOSGeometry::GetInstance() ;
if(!fGeom) fGeom = AliPHOSGeometry::GetInstance("IHEP");
GetCalibrationParameters() ;
}
//--------------------------------------------------------------------------------------
-AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp):TObject(),
- fEmcMinE(0.),fCpvMinE(0.),fSampleQualityCut(1.),fEmcCrystals(0),fGeom(0),fPulseGenerator(0){
+AliPHOSRawDigiProducer::AliPHOSRawDigiProducer(const AliPHOSRawDigiProducer &dp):
+ TObject(),
+ fEmcMinE(0.),
+ fCpvMinE(0.),
+ fSampleQualityCut(1.),
+ fGlobalAltroOffset(0),
+ fEmcCrystals(0),
+ fGeom(0),
+ fPulseGenerator(0)
+{
+ // Copy constructor
fEmcMinE = dp.fEmcMinE ;
fCpvMinE = dp.fCpvMinE ;
fGeom = dp.fGeom ;
}
//--------------------------------------------------------------------------------------
-AliPHOSRawDigiProducer& AliPHOSRawDigiProducer::operator= (const AliPHOSRawDigiProducer &dp){
+AliPHOSRawDigiProducer& AliPHOSRawDigiProducer::operator= (const AliPHOSRawDigiProducer &dp)
+{
+ // Assign operator
+
if(&dp == this) return *this;
fEmcMinE = dp.fEmcMinE ;
fCpvMinE = dp.fCpvMinE ;
fSampleQualityCut = dp.fSampleQualityCut ;
+ fGlobalAltroOffset = dp.fGlobalAltroOffset ;
fEmcCrystals = dp.fEmcCrystals ;
fGeom = dp.fGeom ;
if(fPulseGenerator) delete fPulseGenerator ;
return *this;
}
//--------------------------------------------------------------------------------------
-AliPHOSRawDigiProducer::~AliPHOSRawDigiProducer(){
- if(fPulseGenerator) delete fPulseGenerator ;
- fPulseGenerator=0 ;
+AliPHOSRawDigiProducer::~AliPHOSRawDigiProducer()
+{
+ // Desctructor
+ if(fPulseGenerator) delete fPulseGenerator ;
+ fPulseGenerator=0 ;
}
//--------------------------------------------------------------------------------------
void AliPHOSRawDigiProducer::MakeDigits(TClonesArray *digits, AliPHOSRawDecoder* decoder)
//Temporary array for LowGain digits
TClonesArray tmpLG("AliPHOSDigit",10000) ;
Int_t ilgDigit=0 ;
+
+
+ //Read current altro offcet from RCU
+ decoder->SetAmpOffset(fGlobalAltroOffset) ;
+
+ //Let decoder subtract pedestals in case of ZS
+ decoder->SetCalibData(fgCalibData) ;
while (decoder->NextDigit()) {
if(energy<=baseLine) //in ADC channels
continue ;
- //remove digits with bas shape. Decoder should calculate quality so that
+ //remove digits with bad shape. Decoder should calculate quality so that
//in default case quality [0,1], while larger values of quality mean somehow
//corrupted samples, 999 means obviously corrupted sample.
//It is difficult to fit samples with overflow (even setting cut on overflow values)
iLG++ ;
digLG = dynamic_cast<AliPHOSDigit*>(tmpLG.At(iLG)) ;
}
- Int_t absId=digHG->GetId() ;
- Int_t relId[4] ;
+ absId=digHG->GetId() ;
fGeom->AbsToRelNumbering(absId,relId) ;
if(digLG && digHG->GetId() == digLG->GetId()){ //we found pair
if(isBadMap){ //check bad map now
Int_t relid[4] ;
fGeom->AbsToRelNumbering(digit->GetId(), relid) ;
- if(fgCalibData->IsBadChannelEmc(relid[0],relid[2],relid[3])){
+ if(fgCalibData->IsBadChannelEmc(relid[0],relid[3],relid[2])){
digits->RemoveAt(i) ;
}
}