fRejectExoticCluster(kFALSE), fPIDUtils(), fAODFilterMask(32),
fMatchedTrackIndex(0x0), fMatchedClusterIndex(0x0),
fResidualEta(0x0), fResidualPhi(0x0), fCutEtaPhiSum(kTRUE), fCutEtaPhiSeparate(kFALSE),
- fCutR(0.1), fCutEta(0.02), fCutPhi(0.04),
- fMass(0.139), fStep(50),
- fTrackCutsType(kTPCOnlyCut), fCutMinTrackPt(0), fCutMinNClusterTPC(-1),
+ fCutR(0.1), fCutEta(0.025), fCutPhi(0.05),
+ fMass(0.139), fStep(10),
+ fTrackCutsType(kLooseCut), fCutMinTrackPt(0), fCutMinNClusterTPC(-1),
fCutMinNClusterITS(-1), fCutMaxChi2PerClusterTPC(1e10), fCutMaxChi2PerClusterITS(1e10),
fCutRequireTPCRefit(kFALSE), fCutRequireITSRefit(kFALSE), fCutAcceptKinkDaughters(kFALSE),
fCutMaxDCAToVertexXY(1e10), fCutMaxDCAToVertexZ(1e10), fCutDCAToVertex2D(kFALSE)
{
//Destructor.
- if(fEMCALRecalibrationFactors) {
- fEMCALRecalibrationFactors->Clear();
- delete fEMCALRecalibrationFactors;
- }
+ if(fEMCALRecalibrationFactors) {
+ fEMCALRecalibrationFactors->Clear();
+ delete fEMCALRecalibrationFactors;
+ }
if(fEMCALTimeRecalibrationFactors) {
fEMCALTimeRecalibrationFactors->Clear();
}
if(fEMCALBadChannelMap) {
- fEMCALBadChannelMap->Clear();
- delete fEMCALBadChannelMap;
- }
+ fEMCALBadChannelMap->Clear();
+ delete fEMCALBadChannelMap;
+ }
delete fMatchedTrackIndex ;
delete fMatchedClusterIndex ;
delete fResidualEta ;
delete fResidualPhi ;
+ delete fPIDUtils ;
+ InitTrackCuts();
}
//_______________________________________________________________
// of the cells that compose the cluster.
// bc= bunch crossing number returned by esdevent->GetBunchCrossNumber();
- if(!IsRecalibrationOn()) return;
+ if(!IsRecalibrationOn() && !IsTimeRecalibrationOn()) return;
if(!cells){
AliInfo("Cells pointer null!");
}
-//________________________________________________________________
-void AliEMCALRecoUtils::RecalibrateCellTime(const Int_t absId, const Int_t bc, Double_t & celltime){
+//_________________________________________________________________________________________________
+void AliEMCALRecoUtils::RecalibrateCellTime(const Int_t absId, const Int_t bc, Double_t & celltime)
+{
// Recalibrate time of cell with absID considering the recalibration map
// bc= bunch crossing number returned by esdevent->GetBunchCrossNumber();
-
+
if(!fCellsRecalibrated && IsTimeRecalibrationOn()){
-// printf("cell time org %g, ",celltime);
-
- Double_t timeBCoffset = 0.;
- if( bc%4 ==0 || bc%4==1) timeBCoffset = 100.*1.e-9; //in ns
- Double_t celloffset = GetEMCALChannelTimeRecalibrationFactor(bc%4,absId)*1.e-9;
+ celltime -= GetEMCALChannelTimeRecalibrationFactor(bc%4,absId)*1.e-9; ;
-// printf("absId %d, time %f bc %d-%d: bc0 %f, bc1 %f, bc2 %f, bc3 %f \n", absId, celltime*1.e9,bc, bc%4,
-// GetEMCALChannelTimeRecalibrationFactor(0,absId),GetEMCALChannelTimeRecalibrationFactor(1,absId),
-// GetEMCALChannelTimeRecalibrationFactor(2,absId),GetEMCALChannelTimeRecalibrationFactor(3,absId));
-
- celltime -= timeBCoffset ;
- celltime -= celloffset ;
-// printf("new %g\n",celltime);
}
}
-//__________________________________________________
+//________________________________________________________________________________________________________________
void AliEMCALRecoUtils::RecalculateClusterPosition(AliEMCALGeometry *geom, AliVCaloCells* cells, AliVCluster* clu)
{
//For a given CaloCluster recalculates the position for a given set of misalignment shifts and puts it again in the CaloCluster.
TVector3 vec(clsPos[0],clsPos[1],clsPos[2]);
Double_t alpha = ((int)(vec.Phi()*TMath::RadToDeg()/20)+0.5)*20*TMath::DegToRad();
vec.RotateZ(-alpha); //Rotate the cluster to the local extrapolation coordinate system
- if(!AliTrackerBase::PropagateTrackToBxByBz(trkParam, vec.X(), fMass, fStep,kTRUE, 0.99, -1)) return kFALSE;
+ if(!AliTrackerBase::PropagateTrackToBxByBz(trkParam, vec.X(), fMass, fStep,kTRUE, 0.8, -1)) return kFALSE;
trkParam->GetXYZ(trkPos); //Get the extrapolated global position
TVector3 clsPosVec(clsPos[0],clsPos[1],clsPos[2]);
//DCA cuts
- Float_t maxDCAToVertexXYPtDep = 0.0182 + 0.0350/TMath::Power(esdTrack->Pt(),1.01); //This expression comes from AliESDtrackCuts::GetStandardITSTPCTrackCuts2010()
- //AliDebug(3,Form("Track pT = %f, DCAtoVertexXY = %f",esdTrack->Pt(),MaxDCAToVertexXYPtDep));
- SetMaxDCAToVertexXY(maxDCAToVertexXYPtDep); //Set pT dependent DCA cut to vertex in x-y plane
+ if(fTrackCutsType==kGlobalCut)
+ {
+ Float_t maxDCAToVertexXYPtDep = 0.0182 + 0.0350/TMath::Power(esdTrack->Pt(),1.01); //This expression comes from AliESDtrackCuts::GetStandardITSTPCTrackCuts2010()
+ //AliDebug(3,Form("Track pT = %f, DCAtoVertexXY = %f",esdTrack->Pt(),MaxDCAToVertexXYPtDep));
+ SetMaxDCAToVertexXY(maxDCAToVertexXYPtDep); //Set pT dependent DCA cut to vertex in x-y plane
+ }
Float_t b[2];
if (!fCutDCAToVertex2D && TMath::Abs(dcaToVertexZ) > fCutMaxDCAToVertexZ)
cuts[9] = kTRUE;
- //Require at least one SPD point + anything else in ITS
- if( (esdTrack->HasPointOnITSLayer(0) || esdTrack->HasPointOnITSLayer(1)) == kFALSE)
- cuts[10] = kTRUE;
+ if(fTrackCutsType==kGlobalCut)
+ {
+ //Require at least one SPD point + anything else in ITS
+ if( (esdTrack->HasPointOnITSLayer(0) || esdTrack->HasPointOnITSLayer(1)) == kFALSE)
+ cuts[10] = kTRUE;
+ }
Bool_t cut=kFALSE;
- for (Int_t i=0; i<kNCuts; i++)
+ for (Int_t i=0; i<kNCuts; i++)
if (cuts[i]) {cut = kTRUE;}
// cut the track
else
return kTRUE;
}
+
+
//__________________________________________________
void AliEMCALRecoUtils::InitTrackCuts()
{
{
AliInfo(Form("Track cuts for matching: Loose cut w/o DCA cut"));
SetMinNClustersTPC(50);
- SetAcceptKinkDaughters(kFALSE);
+ SetAcceptKinkDaughters(kTRUE);
break;
}