From 4c489e4e311f422ea3d2fc43f15746721575d519 Mon Sep 17 00:00:00 2001 From: gconesab Date: Wed, 10 Dec 2014 13:53:03 +0100 Subject: [PATCH] add 2 additional nonlinearity corrections to aliroot: kPi0MCv6 (to be used on MC in conjunction with kSDMv6) kSDMv6 (to be used on data in conjunction with kPi0MCv6) These are based on the symmetric decay method but the shapes of the nonlinearity curves are constrained by the test beam data. The method is described in the note: https://aliceinfo.cern.ch/Notes/node/211 - Sec 3.1.2 (Test Beam Constrained SDM). Author: Jason Kamin --- EMCAL/AliEMCALRecoUtils.cxx | 54 +++++++++++++++++++++++++++++++++++++ EMCAL/AliEMCALRecoUtils.h | 9 ++++++- 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/EMCAL/AliEMCALRecoUtils.cxx b/EMCAL/AliEMCALRecoUtils.cxx index 6e512eeb407..0538a9bedb3 100644 --- a/EMCAL/AliEMCALRecoUtils.cxx +++ b/EMCAL/AliEMCALRecoUtils.cxx @@ -727,6 +727,40 @@ Float_t AliEMCALRecoUtils::CorrectClusterEnergyLinearity(AliVCluster* cluster) break; } + case kSDMv6: + { + //Based on fit to the MC/data using kNoCorrection on the data + // - utilizes symmetric decay method and kPi0MCv6(MC) - 09 Dec 2014 + // - parameters constrained by the test beam data as well + // described in the note: https://aliceinfo.cern.ch/Notes/node/211 - Sec 3.1.2 (Test Beam Constrained SDM). + //fNonLinearityParams[0] = 1.0; + //fNonLinearityParams[1] = 0.237767; + //fNonLinearityParams[2] = 0.651203; + //fNonLinearityParams[3] = 0.183741; + //fNonLinearityParams[4] = 155.427; + //fNonLinearityParams[5] = 17.0335; + //fNonLinearityParams[6] = 0.987054; + 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 kPi0MCv6: + { + //Based on comparing MC truth information to the reconstructed energy of clusters. + // described in the note: https://aliceinfo.cern.ch/Notes/node/211 - Sec 3.1.2 (Test Beam Constrained SDM). + //fNonLinearityParams[0] = 1.0; + //fNonLinearityParams[1] = 0.0797873; + //fNonLinearityParams[2] = 1.68322; + //fNonLinearityParams[3] = 0.0806098; + //fNonLinearityParams[4] = 244.586; + //fNonLinearityParams[5] = 116.938; + //fNonLinearityParams[6] = 1.00437; + 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; @@ -835,6 +869,26 @@ void AliEMCALRecoUtils::InitNonLinearityParam() fNonLinearityParams[6] = 1.01286; } + if (fNonLinearityFunction == kSDMv6) { + fNonLinearityParams[0] = 1.0; + fNonLinearityParams[1] = 0.237767; + fNonLinearityParams[2] = 0.651203; + fNonLinearityParams[3] = 0.183741; + fNonLinearityParams[4] = 155.427; + fNonLinearityParams[5] = 17.0335; + fNonLinearityParams[6] = 0.987054; + } + + if (fNonLinearityFunction == kPi0MCv6) { + fNonLinearityParams[0] = 1.0; + fNonLinearityParams[1] = 0.0797873; + fNonLinearityParams[2] = 1.68322; + fNonLinearityParams[3] = 0.0806098; + fNonLinearityParams[4] = 244.586; + fNonLinearityParams[5] = 116.938; + fNonLinearityParams[6] = 1.00437; + } + } //_________________________________________________________ diff --git a/EMCAL/AliEMCALRecoUtils.h b/EMCAL/AliEMCALRecoUtils.h index b8c89bc4a8a..8542d3dae75 100644 --- a/EMCAL/AliEMCALRecoUtils.h +++ b/EMCAL/AliEMCALRecoUtils.h @@ -49,7 +49,14 @@ public: void Print(const Option_t*) const; //enums - enum NonlinearityFunctions{kPi0MC=0,kPi0GammaGamma=1,kPi0GammaConversion=2,kNoCorrection=3,kBeamTest=4,kBeamTestCorrected=5,kPi0MCv2=6,kPi0MCv3=7,kBeamTestCorrectedv2=8,kSDMv5=9,kPi0MCv5=10}; + enum NonlinearityFunctions{ kPi0MC = 0, kPi0GammaGamma = 1, + kPi0GammaConversion = 2, kNoCorrection = 3, + kBeamTest= 4, kBeamTestCorrected = 5, + kPi0MCv2 = 6, kPi0MCv3 = 7, + kBeamTestCorrectedv2 = 8, + kSDMv5 = 9, kPi0MCv5 = 10, + kSDMv6 =11, kPi0MCv6 = 12}; + enum PositionAlgorithms{kUnchanged=-1,kPosTowerIndex=0, kPosTowerGlobal=1}; enum ParticleType{kPhoton=0, kElectron=1,kHadron =2, kUnknown=-1}; enum { kNCuts = 12 }; //track matching Marcel -- 2.43.0