fM02MinParam[3] = 0.0069; // pol2 param2 for NLM=1 , E < 16 GeV
fM02MinParam[4] = 0.3; // absolute minimum in any case
- fAsyMinParam[0] = 0.08 ; // pol2 param0 for NLM=2 , E < 11 GeV
- fAsyMinParam[1] = 0.127; // pol2 param1 for NLM=2 , E < 11 GeV
- fAsyMinParam[2] =-0.0049; // pol2 param2 for NLM=2 , E < 11 GeV
+ fAsyMinParam[0][0] =-0.02 ; // pol3 param0 for NLM=1 , E < 25 GeV, pp
+ fAsyMinParam[0][1] = 0.072 ; // pol3 param1 for NLM=1 , E < 25 GeV, pp
+ fAsyMinParam[0][2] =-0.0014; // pol3 param2 for NLM=1 , E < 25 GeV, pp
+ fAsyMinParam[0][3] = 0 ; // pol3 param2 for NLM=1 , E < 25 GeV, pp
+
+ fAsyMinParam[1][0] =-0.33 ; // pol3 param0 for NLM>2 , E < 25 GeV, pp
+ fAsyMinParam[1][1] = 0.20 ; // pol3 param1 for NLM>2 , E < 25 GeV, pp
+ fAsyMinParam[1][2] =-0.011; // pol3 param2 for NLM>2 , E < 25 GeV, pp
+ fAsyMinParam[1][3] = 0.00019; // pol3 param2 for NLM>2 , E < 25 GeV, pp
+
+// fAsyMinParam[0][0] =-0.41 ; // pol3 param0 for NLM=1 , E < 25 GeV, PbPb
+// fAsyMinParam[0][1] = 0.111 ; // pol3 param1 for NLM=1 , E < 25 GeV, PbPb
+// fAsyMinParam[0][2] =-0.0023; // pol3 param2 for NLM=1 , E < 25 GeV, PbPb
+// fAsyMinParam[0][3] = 0 ; // pol3 param2 for NLM=1 , E < 25 GeV, PbPb
+//
+// fAsyMinParam[1][0] =-1.3 ; // pol3 param0 for NLM>2 , E < 25 GeV, PbPb
+// fAsyMinParam[1][1] = 0.32 ; // pol3 param1 for NLM>2 , E < 25 GeV, PbPb
+// fAsyMinParam[1][2] =-0.015; // pol3 param2 for NLM>2 , E < 25 GeV, PbPb
+// fAsyMinParam[1][3] = 0.00022; // pol3 param2 for NLM>2 , E < 25 GeV, PbPb
+
fSplitEFracMin = 0.85 ;
fSplitWidthSigma = 2.5 ;
Float_t abasy = TMath::Abs(asy);
+ Int_t inlm = nlm-1;
+ if(nlm > 2) inlm=1; // only 2 cases defined nlm=1 and nlm>=2
+
// Get the parametrized min cut of asymmetry for NLM=2 up to 11 GeV
- Float_t cut = fAsyMinParam[0]+energy*fAsyMinParam[1]+energy*energy*fAsyMinParam[2];
+ Float_t cut = fAsyMinParam[inlm][0]+energy*fAsyMinParam[inlm][1]+energy*energy*fAsyMinParam[inlm][2]+
+ energy*energy*energy*fAsyMinParam[inlm][3];
+
+ if(energy > 25 ) cut = 0.95;
- if(nlm != 2 || energy > 11 ) cut = 0.95;
+ //printf("energy %2.2f - nlm: %d (%d)- p0 %f, p1 %f, p2 %f, p3 %f ; cut: %2.2f\n",energy,nlm,inlm,
+ // fAsyMinParam[inlm][0],fAsyMinParam[inlm][1],fAsyMinParam[inlm][2],fAsyMinParam[inlm][3],cut);
if(abasy < cut) return kTRUE;
else return kFALSE;
void SetSplitWidthSigma(Float_t s) { fSplitWidthSigma = s ; }
void SetPi0MassWidthSelectionParameters (Int_t iparam, Float_t param) { if(iparam < 7 ) fMassWidthPi0Param[iparam] = param ; }
void SetM02MinimumSelectionParameters (Int_t iparam, Float_t param) { if(iparam < 5 ) fM02MinParam [iparam] = param ; }
- void SetAsymmetryMinimumSelectionParameters(Int_t iparam, Float_t param) { if(iparam < 3 ) fAsyMinParam [iparam] = param ; }
+ void SetAsymmetryMinimumSelectionParameters(Int_t inlm, Int_t iparam, Float_t param)
+ { if(iparam < 4 && inlm < 2) fAsyMinParam[inlm][iparam] = param ; }
void SetPi0MassRange(Float_t min, Float_t max) { fMassPi0Min = min ; fMassPi0Max = max ; } // Simple case
void SetEtaMassRange(Float_t min, Float_t max) { fMassEtaMin = min ; fMassEtaMax = max ; }
Float_t fMassPhoMax ; // Min Photon mass
Float_t fMassWidthPi0Param[7] ; // 3 param for pol2 fit on width, 2 param for mass position NLM=1 and NLM>1 for pi0 selection
Float_t fM02MinParam[5] ; // 3 param for pol2 fit on M02 minimum
- Float_t fAsyMinParam[5] ; // 3 param for pol2 fit on asymmetry minimum, split
+ Float_t fAsyMinParam[2][5] ; // 4 param for pol3 fit on asymmetry minimum, for 2 cases, NLM=1 and NLM>=2
Float_t fSplitEFracMin ; // Do not use clusters with too large energy in cluster compared
// to energy in splitted clusters
Float_t fSplitWidthSigma; // Cut on mass+-width*fSplitWidthSigma
AliCaloPID & operator = (const AliCaloPID & cpid) ; // cpy assignment
AliCaloPID( const AliCaloPID & cpid) ; // cpy ctor
- ClassDef(AliCaloPID,15)
+ ClassDef(AliCaloPID,16)
} ;