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();
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();
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 ; }
void SwitchOnFillSSWeightHistograms() { fFillSSWeightHisto = kTRUE ; }
void SwitchOffFillSSWeightHistograms() { fFillSSWeightHisto = kFALSE ; }
+ void SwitchOnFillNLMDiffCutsHistograms() { fFillNLMDiffCutHisto = kTRUE ; }
+ void SwitchOffFillNLMDiffCutsHistograms() { fFillNLMDiffCutHisto = kFALSE ; }
+
void SwitchOnFillEbinHistograms() { fFillEbinHisto = kTRUE ; }
void SwitchOffFillEbinHistograms() { fFillEbinHisto = kFALSE ; }
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,
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
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
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
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)
} ;