add 2 additional nonlinearity corrections to aliroot:
authorgconesab <gustavo.conesa.balbastre@cern.ch>
Wed, 10 Dec 2014 12:53:03 +0000 (13:53 +0100)
committergconesab <gustavo.conesa.balbastre@cern.ch>
Wed, 10 Dec 2014 12:54:13 +0000 (13:54 +0100)
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
EMCAL/AliEMCALRecoUtils.h

index 6e512ee..0538a9b 100644 (file)
@@ -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;   
+  }
+
 }
 
 //_________________________________________________________
index b8c89bc..8542d3d 100644 (file)
@@ -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