fCutMinNClusterITS(0), fCutMaxChi2PerClusterTPC(0), fCutMaxChi2PerClusterITS(0),
fCutRequireTPCRefit(kFALSE), fCutRequireITSRefit(kFALSE), fCutAcceptKinkDaughters(kFALSE),
fCutMaxDCAToVertexXY(0), fCutMaxDCAToVertexZ(0), fCutDCAToVertex2D(kFALSE),
- fCutRequireITSStandAlone(kFALSE), fCutRequireITSpureSA(kFALSE)
+ fCutRequireITSStandAlone(kFALSE), fCutRequireITSpureSA(kFALSE)
{
//
// Constructor.
fCutRequireTPCRefit(reco.fCutRequireTPCRefit), fCutRequireITSRefit(reco.fCutRequireITSRefit),
fCutAcceptKinkDaughters(reco.fCutAcceptKinkDaughters), fCutMaxDCAToVertexXY(reco.fCutMaxDCAToVertexXY),
fCutMaxDCAToVertexZ(reco.fCutMaxDCAToVertexZ), fCutDCAToVertex2D(reco.fCutDCAToVertex2D),
- fCutRequireITSStandAlone(reco.fCutRequireITSStandAlone), fCutRequireITSpureSA(reco.fCutRequireITSpureSA)
+ fCutRequireITSStandAlone(reco.fCutRequireITSStandAlone), fCutRequireITSpureSA(reco.fCutRequireITSpureSA)
{
//Copy ctor
fCutMaxDCAToVertexZ = reco.fCutMaxDCAToVertexZ;
fCutDCAToVertex2D = reco.fCutDCAToVertex2D;
fCutRequireITSStandAlone = reco.fCutRequireITSStandAlone;
- fCutRequireITSpureSA = reco.fCutRequireITSpureSA;
+ fCutRequireITSpureSA = reco.fCutRequireITSpureSA;
+
if (reco.fResidualEta) {
// assign or copy construct
if (fResidualEta) {
if (fMatchedClusterIndex) delete fMatchedClusterIndex;
fMatchedClusterIndex = 0;
}
-
+
return *this;
}
break;
}
+ case kSDMv5:
+ {
+ //Based on fit to the MC/data using kNoCorrection on the data - utilizes symmetric decay method and kPi0MCv5(MC) - 28 Oct 2013
+ //fNonLinearityParams[0] = 1.0;
+ //fNonLinearityParams[1] = 6.64778e-02;
+ //fNonLinearityParams[2] = 1.570;
+ //fNonLinearityParams[3] = 9.67998e-02;
+ //fNonLinearityParams[4] = 2.19381e+02;
+ //fNonLinearityParams[5] = 6.31604e+01;
+ //fNonLinearityParams[6] = 1.01286;
+ energy *= fNonLinearityParams[6]/(fNonLinearityParams[0]*(1./(1.+fNonLinearityParams[1]*exp(-energy/fNonLinearityParams[2]))*1./(1.+fNonLinearityParams[3]*exp((energy-fNonLinearityParams[4])/fNonLinearityParams[5])))) * (0.964 + exp(-3.132-0.435*energy*2.0));
+
+ break;
+ }
+
+ case kPi0MCv5:
+ {
+ //Based on comparing MC truth information to the reconstructed energy of clusters.
+ //fNonLinearityParams[0] = 1.0;
+ //fNonLinearityParams[1] = 6.64778e-02;
+ //fNonLinearityParams[2] = 1.570;
+ //fNonLinearityParams[3] = 9.67998e-02;
+ //fNonLinearityParams[4] = 2.19381e+02;
+ //fNonLinearityParams[5] = 6.31604e+01;
+ //fNonLinearityParams[6] = 1.01286;
+ energy *= fNonLinearityParams[6]/(fNonLinearityParams[0]*(1./(1.+fNonLinearityParams[1]*exp(-energy/fNonLinearityParams[2]))*1./(1.+fNonLinearityParams[3]*exp((energy-fNonLinearityParams[4])/fNonLinearityParams[5]))));
+
+ break;
+ }
+
case kNoCorrection:
AliDebug(2,"No correction on the energy\n");
break;
fNonLinearityParams[5] = 31.5028;
fNonLinearityParams[6] = 0.968;
}
+
+ if (fNonLinearityFunction == kSDMv5) {
+ fNonLinearityParams[0] = 1.0;
+ fNonLinearityParams[1] = 6.64778e-02;
+ fNonLinearityParams[2] = 1.570;
+ fNonLinearityParams[3] = 9.67998e-02;
+ fNonLinearityParams[4] = 2.19381e+02;
+ fNonLinearityParams[5] = 6.31604e+01;
+ fNonLinearityParams[6] = 1.01286;
+ }
+
+ if (fNonLinearityFunction == kPi0MCv5) {
+ fNonLinearityParams[0] = 1.0;
+ fNonLinearityParams[1] = 6.64778e-02;
+ fNonLinearityParams[2] = 1.570;
+ fNonLinearityParams[3] = 9.67998e-02;
+ fNonLinearityParams[4] = 2.19381e+02;
+ fNonLinearityParams[5] = 6.31604e+01;
+ fNonLinearityParams[6] = 1.01286;
+ }
+
}
//_________________________________________________________
fExoticCellFraction = 0.97;
fExoticCellDiffTime = 1e6;
- fExoticCellMinAmplitude = 0.5;
+ fExoticCellMinAmplitude = 4.0;
fAODFilterMask = 128;
fAODHybridTracks = kFALSE;
//If the input event is AOD, the starting point for extrapolation is at vertex
//AOD tracks are selected according to its filterbit.
else if (aodevent) {
- aodTrack = aodevent->GetTrack(itr);
+ aodTrack = dynamic_cast<AliAODTrack*>(aodevent->GetTrack(itr));
+ if(!aodTrack) AliFatal("Not a standard AOD");
if (!aodTrack) continue;
if (fAODTPCOnlyTracks) { // Match with TPC only tracks, default from May 2013, before filter bit 32
//------------------------------------------------------------------------------------
Bool_t AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(AliVTrack *track,
- Double_t emcalR, Double_t mass, Double_t step)
+ Double_t emcalR, Double_t mass,
+ Double_t step, Double_t minpt,
+ Bool_t useMassForTracking)
{
// Extrapolate track to EMCAL surface
track->SetTrackPhiEtaPtOnEMCal(-999, -999, -999);
- if (track->Pt()<0.350) //todo: discuss with Marta, everywhere else we use pT=0
+ if (track->Pt()<minpt)
return kFALSE;
Double_t phi = track->Phi()*TMath::RadToDeg();
return kFALSE;
}
- if (mass<0) {
+ // Select the mass hypothesis
+ if ( mass < 0 )
+ {
Bool_t onlyTPC = kFALSE;
- if (mass==-99)
- onlyTPC=kTRUE;
+ if ( mass == -99 ) onlyTPC=kTRUE;
+
if (esdt)
- mass = esdt->GetMass(onlyTPC);
- else
- mass = aodt->M();
+ {
+ if ( useMassForTracking ) mass = esdt->GetMassForTracking();
+ else mass = esdt->GetMass(onlyTPC);
+ }
+ else
+ {
+ if ( useMassForTracking ) mass = aodt->GetMassForTracking();
+ else mass = aodt->M();
+ }
}
AliExternalTrackParam *trackParam = 0;