]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaInsideClusterInvariantMass.h
index 8067679c4762403aba22201c87643de1fe619cc7..d4409e2423427f1501281281a0347963a58a29f6 100755 (executable)
@@ -30,8 +30,8 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   AliAnaInsideClusterInvariantMass() ; // default ctor
   virtual ~AliAnaInsideClusterInvariantMass() { ; } //virtual dtor
   
-  void         CheckLocalMaximaMCOrigin(AliVCluster* cluster, const Int_t mcindex, const Int_t noverlaps,
-                                        const Float_t e1,     const Float_t e2,    const Float_t mass);
+  void         CheckLocalMaximaMCOrigin(AliVCluster* cluster, Int_t mcindex, Int_t noverlaps,
+                                        Float_t e1,     Float_t e2,    Float_t mass);
                                         //, Float_t m02, TLorentzVector l1, TLorentzVector l2);
   
   TObjString * GetAnalysisCuts();
@@ -40,76 +40,78 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   
   void         GetMCIndex(AliVCluster * cluster, Int_t & mcindex, Int_t & mcTag);
   
-  void         GetMCPrimaryKine(AliVCluster* cluster, const Int_t mcindex, const Int_t mcTag, const Bool_t matched,
+  void         GetMCPrimaryKine(AliVCluster* cluster, Int_t mcindex, Int_t mcTag, Bool_t matched,
                                 Float_t & eprim, Float_t & asymGen, Float_t & angleGen, Int_t & noverlaps );
   
-  void         FillAngleHistograms(const Int_t   nMax,  const Bool_t  matched, const Int_t   mcindex,
-                                   const Float_t en,    const Float_t e1  ,    const Float_t e2,
-                                   const Float_t angle, const Float_t mass,    const Float_t anglePrim,
-                                   const Float_t m02,   const Float_t asym,    const Int_t   pid,    const Int_t   noverlaps);
+  void         FillAngleHistograms(Int_t   nMax,  Bool_t  matched, Int_t   mcindex,
+                                   Float_t en,    Float_t e1  ,    Float_t e2,
+                                   Float_t angle, Float_t mass,    Float_t anglePrim,
+                                   Float_t m02,   Float_t asym,    Int_t   pid,    Int_t   noverlaps);
   
-  void         FillArmenterosHistograms(const Int_t nMax, const Int_t ebin, const Int_t mcindex,
-                                        const Float_t pi0E, TLorentzVector g1, TLorentzVector g2,
-                                        const Float_t m02, const Int_t pid);
+  void         FillArmenterosHistograms(Int_t nMax, Int_t ebin, Int_t mcindex,
+                                        Float_t pi0E, TLorentzVector g1, TLorentzVector g2,
+                                        Float_t m02, Int_t pid);
 
-  void         FillThetaStarHistograms(const Int_t nMax, const Bool_t matched, const Int_t mcindex,
-                                       const Float_t pi0E, TLorentzVector g1, TLorentzVector g2,
-                                       const Float_t m02, const Int_t pid);
+  void         FillThetaStarHistograms(Int_t nMax, Bool_t matched, Int_t mcindex,
+                                       Float_t pi0E, TLorentzVector g1, TLorentzVector g2,
+                                       Float_t m02, Int_t pid);
 
-  void         FillEBinHistograms(const Int_t ebin, const Int_t nMax, const Int_t mcindex, const Float_t splitFrac,
-                                  const Float_t mass, const Float_t asym, const Float_t l0);
+  void         FillEBinHistograms(Int_t ebin, Int_t nMax, Int_t mcindex, Float_t splitFrac,
+                                  Float_t mass, Float_t asym, Float_t l0);
   
-  void         FillMCHistograms(const Float_t en,        const Float_t e1  , const Float_t e2,
-                                const Int_t ebin,        const Int_t mcindex,const Int_t noverlaps,
-                                const Float_t l0,        const Float_t mass,
-                                const Int_t nMax,        const Bool_t  matched,
-                                const Float_t splitFrac, const Float_t asym,
-                                const Float_t eprim,     const Float_t asymGen);
+  void         FillMCHistograms(Float_t en,        Float_t e1  , Float_t e2,
+                                Int_t ebin,        Int_t mcindex,Int_t noverlaps,
+                                Float_t l0,        Float_t mass,
+                                Int_t nMax,        Bool_t  matched,
+                                Float_t splitFrac, Float_t asym,
+                                Float_t eprim,     Float_t asymGen);
   
-  void         FillMCOverlapHistograms(const Float_t en,      const Float_t enprim,
-                                       const Int_t   nc,      const Float_t mass,    const Float_t l0,
-                                       const Float_t asym,    const Float_t splitFrac,
-                                       const Int_t   nlm,     const Int_t ebin,   const Bool_t matched,
-                                       const Int_t   mcindex, const Int_t noverlaps);
+  void         FillMCOverlapHistograms(Float_t en,      Float_t enprim,
+                                       Int_t   nc,      Float_t mass,    Float_t l0,
+                                       Float_t asym,    Float_t splitFrac,
+                                       Int_t   nlm,     Int_t ebin,   Bool_t matched,
+                                       Int_t   mcindex, Int_t noverlaps);
   
-  void         FillSSWeightHistograms(AliVCluster *cluster, const Int_t nlm, const Int_t absId1, const Int_t absId2);
+  void         FillSSWeightHistograms(AliVCluster *cluster, Int_t nlm, Int_t absId1, Int_t absId2);
   
-  void         FillSSExtraHistograms(AliVCluster *cluster, const Int_t nMax,
-                                     const Bool_t matched, const Int_t mcindex,
-                                     const Float_t mass  , const Int_t ebin);
+  void         FillSSExtraHistograms(AliVCluster *cluster, Int_t nMax,
+                                     Bool_t matched, Int_t mcindex,
+                                     Float_t mass  , Int_t ebin);
 
-  void         FillNCellHistograms(const Int_t   ncells,  const Float_t energy, const Int_t nMax,
-                                   const Bool_t  matched, const Int_t mcindex,
-                                   const Float_t mass   , const Float_t l0);
+  void         FillNLMDiffCutHistograms(AliVCluster *cluster, AliVCaloCells *cells, Bool_t matched);
+
+  void         FillNCellHistograms(Int_t   ncells,  Float_t energy, Int_t nMax,
+                                   Bool_t  matched, Int_t mcindex,
+                                   Float_t mass   , Float_t l0);
   
-  void         FillTrackMatchingHistograms(AliVCluster * cluster,const Int_t nMax, const Int_t mcindex);
+  void         FillTrackMatchingHistograms(AliVCluster * cluster,Int_t nMax, Int_t mcindex);
   
-  void         FillHistograms1(const Float_t en,     const Float_t e1,     const Float_t e2,
-                               const Int_t nMax,     const Float_t mass,   const Float_t l0,
-                               const Float_t eta,    const Float_t phi,
-                               const Bool_t matched, const Int_t mcindex);
+  void         FillHistograms1(Float_t en,     Float_t e1,     Float_t e2,
+                               Int_t nMax,     Float_t mass,   Float_t l0,
+                               Float_t eta,    Float_t phi,
+                               Bool_t matched, Int_t mcindex);
 
   
-  void         FillHistograms2(const Float_t en,     const Float_t eprim,
-                               const Float_t e1,     const Float_t e2,      const Int_t nMax,  
-                               const Float_t mass,   const Float_t l0,
-                               const Bool_t matched, const Int_t mcindex);
+  void         FillHistograms2(Float_t en,     Float_t eprim,
+                               Float_t e1,     Float_t e2,      Int_t nMax,  
+                               Float_t mass,   Float_t l0,
+                               Bool_t matched, Int_t mcindex);
   
-  void         FillIdPi0Histograms(const Float_t en,     const Float_t e1,  const Float_t e2,
-                                   const Int_t nc,       const Int_t nMax,  const Float_t t12diff,
-                                   const Float_t mass,   const Float_t l0,
-                                   const Float_t eta,    const Float_t phi,
-                                   const Bool_t matched, const Int_t mcindex);
+  void         FillIdPi0Histograms(Float_t en,     Float_t e1,  Float_t e2,
+                                   Int_t nc,       Int_t nMax,  Float_t t12diff,
+                                   Float_t mass,   Float_t l0,
+                                   Float_t eta,    Float_t phi,
+                                   Bool_t matched, Int_t mcindex);
   
-  void         FillIdEtaHistograms(const Float_t en,     const Float_t e1,  const Float_t e2,
-                                   const Int_t nc,       const Int_t nMax,  const Float_t t12diff,
-                                   const Float_t mass,   const Float_t l0,
-                                   const Float_t eta,    const Float_t phi,
-                                   const Bool_t matched, const Int_t mcindex);
+  void         FillIdEtaHistograms(Float_t en,     Float_t e1,  Float_t e2,
+                                   Int_t nc,       Int_t nMax,  Float_t t12diff,
+                                   Float_t mass,   Float_t l0,
+                                   Float_t eta,    Float_t phi,
+                                   Bool_t matched, Int_t mcindex);
   
-  void         FillIdConvHistograms(const Float_t en,    const Int_t nMax, const Float_t asym,
-                                    const Float_t mass,   const Float_t l0,
-                                    const Bool_t matched, const Int_t mcindex);
+  void         FillIdConvHistograms(Float_t en,    Int_t nMax, Float_t asym,
+                                    Float_t mass,   Float_t l0,
+                                    Bool_t matched, Int_t mcindex);
   
   void         Init();
   
@@ -125,7 +127,7 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
 
   void         SetMinBadChannelDistance(Float_t cut)     { fMinBadDist  = cut ; }
 
-  void         SetWCorrectionParameter(Float_t p = 0.07) { fWSimu       = p   ; }
+  void         SetWCorrectionParameter(Int_t i, Float_t p = 0.07) { if( i<2 ) fWSimu[i] = p; }
   
   void         SwitchOnFillAngleHistograms()             { fFillAngleHisto      = kTRUE  ; }
   void         SwitchOffFillAngleHistograms()            { fFillAngleHisto      = kFALSE ; }
@@ -160,6 +162,9 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   void         SwitchOnFillSSWeightHistograms()          { fFillSSWeightHisto   = kTRUE  ; }
   void         SwitchOffFillSSWeightHistograms()         { fFillSSWeightHisto   = kFALSE ; }
 
+  void         SwitchOnFillNLMDiffCutsHistograms()       { fFillNLMDiffCutHisto = kTRUE  ; }
+  void         SwitchOffFillNLMDiffCutsHistograms()      { fFillNLMDiffCutHisto = kFALSE ; }
+  
   void         SwitchOnFillEbinHistograms()              { fFillEbinHisto       = kTRUE  ; }
   void         SwitchOffFillEbinHistograms()             { fFillEbinHisto       = kFALSE ; }
   
@@ -172,11 +177,18 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   void         SwitchOnSplitClusterDistToBad()           { fCheckSplitDistToBad = kTRUE  ; }
   void         SwitchOffSplitClusterDistToBad()          { fCheckSplitDistToBad = kFALSE ; }
   
-  void         SetNWeightForShowerShape(Int_t n)           { fSSWeightN = n ; }
-  void         SetWeightForShowerShape(Int_t i, Float_t v) { if (i < 10) fSSWeight[i] = v ; }
+  void         SetNWeightForShowerShape(Int_t n)         { fSSWeightN = n ; }
+  void         SetWeightForShowerShape(Int_t i, Float_t v)
+                                                         { if (i < 20) fSSWeight[i] = v ; }
 
-  void         SetNECellCutForShowerShape(Int_t n)           { fSSECellCutN = n ; }
-  void         SetECellCutForShowerShape(Int_t i, Float_t v) { if (i < 10) fSSECellCut[i] = v ; }
+  void         SetNumberOfNLocMaxSettings(Int_t n)       { fNLMSettingN = n ; }
+  void         SetNLocMaxMinE   (Int_t i, Float_t v)     { if (i < 5) fNLMMinE   [i] = v ; }
+  void         SetNLocMaxMinDiff(Int_t i, Float_t v)     { if (i < 5) fNLMMinDiff[i] = v ; }
+  
+  
+  void         SetNECellCutForShowerShape(Int_t n)       { fSSECellCutN = n ; }
+  void         SetECellCutForShowerShape(Int_t i, Float_t v)
+                                                         { if (i < 20) fSSECellCut[i] = v ; }
 
  
   void         RecalculateClusterShowerShapeParametersWithCellCut(const AliEMCALGeometry * geom, AliVCaloCells* cells, AliVCluster * cluster,
@@ -203,6 +215,7 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   Bool_t       fFillSSExtraHisto ;     // Fill shower shape extra histos
   Bool_t       fFillMCHisto ;          // Fill MC energy fraction histos
   Bool_t       fFillSSWeightHisto ;    // Fill weigth histograms
+  Bool_t       fFillNLMDiffCutHisto ;  // Fill NLM histograms for different settings
   Bool_t       fFillEbinHisto ;        // Fill E bin histograms
   Bool_t       fFillMCOverlapHisto ;   // Fill MC particles overlap histograms
   Bool_t       fFillNCellHisto ;       // Fill n cells in cluster dependent histograms
@@ -212,14 +225,18 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   Bool_t       fFillArmenterosHisto;   // Fill armenteros type histo
   Bool_t       fFillThetaStarHisto;    // Fill cosThetaStar histos
   
-  Float_t      fSSWeight[10];          // List of weights to test
+  Float_t      fSSWeight[20];          // List of weights to test
   Int_t        fSSWeightN;             // Total number of weights to test
   
-  Float_t      fSSECellCut[10];        // List of cell min energy cuts to test
+  Float_t      fSSECellCut[20];        // List of cell min energy cuts to test
   Int_t        fSSECellCutN;           // Total number of cell min energy cuts to test
+
+  Float_t      fNLMMinE   [5];         // List of local maxima min energy
+  Float_t      fNLMMinDiff[5];         // List of local maxima min difference cell energy
+  Int_t        fNLMSettingN;           // Total number of NLM settings to test
   
-  Float_t      fWSimu;                 // Slope of the linear correction factor for the shower
-                                       // shape weight in simulation, about 0.07
+  Float_t      fWSimu[2];              // Constant and slope of the linear correction factor for the shower
+                                       // shape weight in simulation, about 1-0.07*w
   
   //Histograms
   
@@ -588,8 +605,8 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   TH2F       * fhPi0CellEMaxFrac [3];                   //! pi0's energy vs energy fraction of main LM and cluster cell energy with NLM = 1, = 2, > 2
   TH2F       * fhPi0CellEMax2Frac [3];                  //! pi0's energy vs energy fraction of second LM and cluster cell energy with NLM = 1, = 2, > 2
   
-  TH2F       * fhM02WeightPi0[3][10] ;                  //! M02 for selected pi0 with different weight, with NLM = 1, = 2, > 2
-  TH2F       * fhM02ECellCutPi0[3][10] ;                //! M02 for selected pi0 with different cut on cell energy, with NLM = 1, = 2, > 2
+  TH2F       * fhM02WeightPi0[3][20] ;                  //! M02 for selected pi0 with different weight, with NLM = 1, = 2, > 2
+  TH2F       * fhM02ECellCutPi0[3][20] ;                //! M02 for selected pi0 with different cut on cell energy, with NLM = 1, = 2, > 2
 
   TH2F       * fhPi0EPairDiffTimeNLM1;                  //! E vs Pair of clusters time difference vs E, for selected pi0, NLM=1
   TH2F       * fhPi0EPairDiffTimeNLM2;                  //! E vs Pair of clusters time difference vs E, for selected pi0, NLM=2
@@ -753,10 +770,19 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   TH2F       * fhMassOnBorder[3];                       //! split mass of clusters with second LM on EMCAL border
   TH2F       * fhM02OnBorder[3];                        //! m02 of clusters with second LM close to EMCAL border
   
+  
+  TH2F       * fhNLocMaxDiffCut   [5][5]   [2] ;        //! Number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks
+  TH2F       * fhM02NLocMaxDiffCut[5][5][3][2] ;        //! M02 for 3 kinds of number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks
+  TH2F       * fhMassNLocMaxDiffCut[5][5][3][2] ;       //! Mass for 3 kinds of number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks
+
+  TH2F       * fhNLocMaxDiffCutPi0   [5][5]   [2] ;     //! Number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks, cluster selected as pi0
+  TH2F       * fhM02NLocMaxDiffCutPi0[5][5][3][2] ;     //! M02 for 3 kinds of number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks, cluster selected as pi0
+  TH2F       * fhMassNLocMaxDiffCutPi0[5][5][3][2] ;    //! M02 for 3 kinds of number of maxima for different values of min Loc Max value and min difference between cells, matched/unmatched with tracks
+  
   AliAnaInsideClusterInvariantMass(              const AliAnaInsideClusterInvariantMass & split) ; // cpy ctor
   AliAnaInsideClusterInvariantMass & operator = (const AliAnaInsideClusterInvariantMass & split) ; // cpy assignment
   
-  ClassDef(AliAnaInsideClusterInvariantMass,28)
+  ClassDef(AliAnaInsideClusterInvariantMass,30)
   
 } ;