// Cluster will be fitted as a superposition of nPar/3 electromagnetic showers
+ if(!gMinuit) //it was deleted by someone else
+ gMinuit = new TMinuit(100) ;
gMinuit->mncler(); // Reset Minuit's list of paramters
gMinuit->SetPrintLevel(-1) ; // No Printout
gMinuit->SetFCN(AliPHOSClusterizerv1::UnfoldingChiSquare) ;
fW0 = recoParam->GetEMCLogWeight();
fW0CPV = recoParam->GetCPVLogWeight();
- fEmcTimeGate = 1.e-6 ;
+ fEmcTimeGate = 1.e-6 ; //10 sample steps
fEcoreRadius = recoParam->GetEMCEcoreRadius();
fToUnfold = recoParam->EMCToUnfold() ;
fEMCRecPoints->AddAt(new AliPHOSEmcRecPoint(""), fNumberOfEmcClusters) ;
clu = static_cast<AliPHOSEmcRecPoint *>( fEMCRecPoints->At(fNumberOfEmcClusters) ) ;
fNumberOfEmcClusters++ ;
- clu->AddDigit(*digit, Calibrate(digit->GetEnergy(),digit->GetId())) ;
+ clu->AddDigit(*digit, Calibrate(digit->GetEnergy(),digit->GetId()),CalibrateT(digit->GetTime(),digit->GetId())) ;
clusterdigitslist[iDigitInCluster] = digit->GetIndexInList() ;
iDigitInCluster++ ;
fDigitsUsed[i]=kTRUE ;
fCPVRecPoints->AddAt(new AliPHOSCpvRecPoint(""), fNumberOfCpvClusters) ;
clu = static_cast<AliPHOSCpvRecPoint *>( fCPVRecPoints->At(fNumberOfCpvClusters) ) ;
fNumberOfCpvClusters++ ;
- clu->AddDigit(*digit, Calibrate(digit->GetEnergy(),digit->GetId())) ;
+ clu->AddDigit(*digit, Calibrate(digit->GetEnergy(),digit->GetId()),0.) ; // no timing information in CPV
clusterdigitslist[iDigitInCluster] = digit->GetIndexInList() ;
iDigitInCluster++ ;
fDigitsUsed[i]=kTRUE ;
case 0 : // not a neighbour
break ;
case 1 : // are neighbours
- clu->AddDigit(*digitN, Calibrate(digitN->GetEnergy(),digit->GetId())) ;
+ clu->AddDigit(*digitN, Calibrate(digitN->GetEnergy(),digitN->GetId()),CalibrateT(digitN->GetTime(),digitN->GetId())) ;
clusterdigitslist[iDigitInCluster] = j ;
iDigitInCluster++ ;
fDigitsUsed[j]=kTRUE ;
// ratio = epar * ShowerShape(xDigit - xpar,zDigit - zpar,vIncid) / efit[iDigit] ;
ratio = epar * ShowerShape(xDigit - xpar,zDigit - zpar) / efit[iDigit] ;
eDigit = emcEnergies[iDigit] * ratio ;
- emcRP->AddDigit( *digit, eDigit ) ;
+ emcRP->AddDigit( *digit, eDigit,CalibrateT(digit->GetTime(),digit->GetId()) ) ;
}
}
else
message = " AliPHOSClusterizerv1 not initialized " ;
- AliInfo(Form("%s, %s %s %s %s %s %s %s %s %s %s", message.Data(),
+ AliInfo(Form("%s, %s %s %s %s %f %f %f %f %f %f", message.Data(),
taskName.Data(),
GetTitle(),
taskName.Data(),
//Author: Boris Polichtchouk
if(!fgCalibData->GetNumOfEmcBadChannels()) return;
- AliInfo(Form("%d bad channel(s) found.\n",fgCalibData->GetNumOfEmcBadChannels()));
Int_t badIds[8000];
+ memset(badIds,0,8000*sizeof(Int_t));
fgCalibData->EmcBadChannelIds(badIds);
AliPHOSEmcRecPoint* rp;
}
//==================================================================================
-Float_t AliPHOSClusterizerv1::Calibrate(Float_t amp, Int_t absId){
+Float_t AliPHOSClusterizerv1::Calibrate(Float_t amp, Int_t absId) const{
// Calibrate EMC digit, i.e. multiply its Amp by a factor read from CDB
const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;
return amp*calibration ;
}
}
+//==================================================================================
+Float_t AliPHOSClusterizerv1::CalibrateT(Float_t time, Int_t absId)const{
+ // Calibrate time in EMC digit
+
+ const AliPHOSGeometry *geom = AliPHOSGeometry::GetInstance() ;
+
+ //Determine rel.position of the cell absolute ID
+ Int_t relId[4];
+ geom->AbsToRelNumbering(absId,relId);
+ Int_t module=relId[0];
+ Int_t row =relId[2];
+ Int_t column=relId[3];
+ if(relId[1]){ //CPV
+ return 0. ;
+ }
+ else{ //EMC
+ time += fgCalibData->GetTimeShiftEmc(module,column,row);
+ return time ;
+ }
+}
+