// It works with MC info and ESD.
// Use with AOD tree = under development
// Origin : A.Maire Mar2009, antonin.maire@ires.in2p3.fr
-// Modified : A.Maire Jan2010, antonin.maire@ires.in2p3.fr
+// Modified : A.Maire Nov2010, antonin.maire@ires.in2p3.fr
//-----------------------------------------------------------------
#include "TFile.h"
#include "TH1F.h"
#include "TH2F.h"
+#include "TVector3.h"
#include "TCanvas.h"
#include "TParticle.h"
#include "TMath.h"
#include "AliCFContainer.h"
#include "AliESDpid.h"
-// #include "AliV0vertexer.h"
-// #include "AliCascadeVertexer.h"
+#include "AliESDtrackCuts.h"
+// #include "AliV0vertexer.h"
+// #include "AliCascadeVertexer.h"
#include "AliESDEvent.h"
#include "AliESDcascade.h"
//_____Dummy constructor________________________________________________________________
AliAnalysisTaskCheckPerformanceCascade::AliAnalysisTaskCheckPerformanceCascade()
: AliAnalysisTaskSE(), // <- take care to AliAnalysisTask( empty )
- fDebugCascade(0), fAnalysisType("ESD"), fCollidingSystems(0), fESDpid(0), /*fPaveTextBookKeeping(0),*/
- fkRerunV0CascVertexers (0),
- fkQualityCutZprimVtxPos (kTRUE),
- fkQualityCutNoTPConlyPrimVtx(kTRUE),
- fkQualityCutTPCrefit (kTRUE),
- fkQualityCut80TPCcls (kTRUE),
- fkExtraSelections (0),
+ fDebugCascade(0), fAnalysisType("ESD"), fTriggerMaskType("kMB"), fCollidingSystems(0), fESDpid(0), fESDtrackCuts(0), /*fPaveTextBookKeeping(0),*/
+ fkRerunV0CascVertexers (0),
+ fkQualityCutZprimVtxPos (kTRUE),
+ fkRejectEventPileUp (kTRUE),
+ fkQualityCutNoTPConlyPrimVtx (kTRUE),
+ fkQualityCutTPCrefit (kTRUE),
+ fkQualityCut80TPCcls (kTRUE),
+ fkIsDataRecoWith1PadTPCCluster (kTRUE),
+ fkExtraSelections (0),
// - Cascade part initialisation
fListHistCascade(0),
fHistMCTrackMultiplicity(0),
+ // - Resolution of the multiplicity estimator
+ f2dHistRecoMultVsMCMult(0),
fHistEtaGenProton(0),
fHistEtaGenAntiProton(0),
f2dHistAsMCResROmegaMinus(0),
f2dHistAsMCResROmegaPlus(0),
+ // - Resolution in phi as function of generated Pt
+ f2dHistAsMCResPhiXiMinus(0),
+ f2dHistAsMCResPhiXiPlus(0),
+ f2dHistAsMCResPhiOmegaMinus(0),
+ f2dHistAsMCResPhiOmegaPlus(0),
+
fCFContCascadePIDAsXiMinus(0),
fCFContCascadePIDAsXiPlus(0),
fCFContCascadePIDAsOmegaMinus(0),
//_____Non-default Constructor________________________________________________________________
AliAnalysisTaskCheckPerformanceCascade::AliAnalysisTaskCheckPerformanceCascade(const char *name)
: AliAnalysisTaskSE(name),
- fDebugCascade(0), fAnalysisType("ESD"), fCollidingSystems(0), fESDpid(0), /*fPaveTextBookKeeping(0),*/
- fkRerunV0CascVertexers (0),
- fkQualityCutZprimVtxPos (kTRUE),
- fkQualityCutNoTPConlyPrimVtx(kTRUE),
- fkQualityCutTPCrefit (kTRUE),
- fkQualityCut80TPCcls (kTRUE),
- fkExtraSelections (0),
+ fDebugCascade(0), fAnalysisType("ESD"), fTriggerMaskType("kMB"), fCollidingSystems(0), fESDpid(0), fESDtrackCuts(0), /*fPaveTextBookKeeping(0),*/
+ fkRerunV0CascVertexers (0),
+ fkQualityCutZprimVtxPos (kTRUE),
+ fkRejectEventPileUp (kTRUE),
+ fkQualityCutNoTPConlyPrimVtx (kTRUE),
+ fkQualityCutTPCrefit (kTRUE),
+ fkQualityCut80TPCcls (kTRUE),
+ fkIsDataRecoWith1PadTPCCluster (kTRUE),
+ fkExtraSelections (0),
// - Cascade part initialisation
fListHistCascade(0),
fHistMCTrackMultiplicity(0),
+ // - Resolution of the multiplicity estimator
+ f2dHistRecoMultVsMCMult(0),
fHistEtaGenProton(0),
fHistEtaGenAntiProton(0),
// - Effective mass histos with combined PID
fHistMassWithCombPIDXiMinus(0), fHistMassWithCombPIDXiPlus(0),
fHistMassWithCombPIDOmegaMinus(0), fHistMassWithCombPIDOmegaPlus(0),
-
+
// - PID Probability versus MC Pt(bachelor track)
f2dHistPIDprobaKaonVsMCPtBach(0), f2dHistPIDprobaPionVsMCPtBach(0),
// - Generated Pt Vs generated y, for the cascade candidates associated with MC + Info Comb. PID
f2dHistAsMCandCombPIDGenPtVsGenYXiMinus(0),
f2dHistAsMCandCombPIDGenPtVsGenYXiPlus(0),
- f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus(0),
+ f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus(0),
f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus(0),
-
+
// - Generated Pt Vs generated y, for the cascade candidates associated with MC
f2dHistAsMCGenPtVsGenYXiMinus(0),
f2dHistAsMCGenPtVsGenYXiPlus(0),
f2dHistAsMCResROmegaMinus(0),
f2dHistAsMCResROmegaPlus(0),
+ // - Resolution in phi as function of generated Pt
+ f2dHistAsMCResPhiXiMinus(0),
+ f2dHistAsMCResPhiXiPlus(0),
+ f2dHistAsMCResPhiOmegaMinus(0),
+ f2dHistAsMCResPhiOmegaPlus(0),
+
fCFContCascadePIDAsXiMinus(0),
fCFContCascadePIDAsXiPlus(0),
fCFContCascadePIDAsOmegaMinus(0),
for(Int_t iAlephIdx = 0; iAlephIdx < 5; iAlephIdx++ ) { fAlephParameters [iAlephIdx] = -1.; }
+ // Extra Loose
+// fV0Sels[0] = 33. ; // max allowed chi2
+// fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+// fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+// fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+// fV0Sels[4] = 0.0 ; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+// fV0Sels[5] = 0.2 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+// fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+//
+// fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+// fCascSels[1] = 0.02 ; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+// fCascSels[2] = 0.008; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+// fCascSels[3] = 0.01 ; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+// fCascSels[4] = 0.5 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+// fCascSels[5] = 0.98 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+// fCascSels[6] = 0.2 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+// fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+
+ // Hyper Loose
+
fV0Sels[0] = 33. ; // max allowed chi2
- fV0Sels[1] = 0.01; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
- fV0Sels[2] = 0.01; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
- fV0Sels[3] = 2.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[1] = 0.001; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.001; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 5.0 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
fV0Sels[4] = 0.0 ; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
+ fV0Sels[5] = 0.1 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
+ fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
+
+ fCascSels[0] = 33. ; // max allowed chi2 (same as PDC07)
+ fCascSels[1] = 0.001; // min allowed V0 impact parameter (PDC07 : 0.05 / LHC09a4 : 0.025 )
+ fCascSels[2] = 0.008; // "window" around the Lambda mass (PDC07 : 0.008 / LHC09a4 : 0.010 )
+ fCascSels[3] = 0.001; // min allowed bachelor's impact parameter (PDC07 : 0.035 / LHC09a4 : 0.025 )
+ fCascSels[4] = 5.0 ; // max allowed DCA between the V0 and the bachelor (PDC07 : 0.1 / LHC09a4 : 0.2 )
+ fCascSels[5] = 0.82 ; //FIXME min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
+ fCascSels[6] = 0.1 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
+ fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+
+
+ //New default vtxR (http://alisoft.cern.ch/viewvc?view=rev&root=AliRoot&revision=40955, 5 May 2010)
+ /*
+ fV0Sels[0] = 33. ; // max allowed chi2
+ fV0Sels[1] = 0.05; // min allowed impact parameter for the 1st daughter (LHC09a4 : 0.05)
+ fV0Sels[2] = 0.05; // min allowed impact parameter for the 2nd daughter (LHC09a4 : 0.05)
+ fV0Sels[3] = 1.5 ; // max allowed DCA between the daughter tracks (LHC09a4 : 0.5)
+ fV0Sels[4] = 0.9 ; // min allowed cosine of V0's pointing angle (LHC09a4 : 0.99)
fV0Sels[5] = 0.2 ; // min radius of the fiducial volume (LHC09a4 : 0.2)
fV0Sels[6] = 100. ; // max radius of the fiducial volume (LHC09a4 : 100.0)
fCascSels[5] = 0.98 ; // min allowed cosine of the cascade pointing angle (PDC07 : 0.9985 / LHC09a4 : 0.998 )
fCascSels[6] = 0.2 ; // min radius of the fiducial volume (PDC07 : 0.9 / LHC09a4 : 0.2 )
fCascSels[7] = 100. ; // max radius of the fiducial volume (PDC07 : 100 / LHC09a4 : 100 )
+ */
-
DefineOutput(1, TList::Class());
}
if (fListHistCascade) { delete fListHistCascade; fListHistCascade = 0x0; }
if (fESDpid) { delete fESDpid; fESDpid = 0x0;} // fESDpid is not stored into the TList
+ if (fESDtrackCuts) { delete fESDtrackCuts; fESDtrackCuts = 0x0; }
/*if (fPaveTextBookKeeping) { delete fPaveTextBookKeeping; fPaveTextBookKeeping = 0x0; } // fPaveTextBookKeeping is not stored into the TList*/
}
if(! fESDpid){
- // Reasonable parameters extracted for p-p simulation (LHC09a4) - A.Kalweit
- // fAlephParameters[0] = 4.23232575531564326e+00/50;//50*0.76176e-1;
- // fAlephParameters[1] = 8.68482806165147636e+00;//10.632;
- // fAlephParameters[2] = 1.34000000000000005e-05;//0.13279e-4;
- // fAlephParameters[3] = 2.30445734159456084e+00;//1.8631;
- // fAlephParameters[4] = 2.25624744086878559e+00;//1.9479;
-
- // Param for LHC09d10 prod - A.Kalweit
- fAlephParameters[0] = 2.15898e+00/50.;
- fAlephParameters[1] = 1.75295e+01;
- fAlephParameters[2] = 3.40030e-09;
- fAlephParameters[3] = 1.96178e+00;
- fAlephParameters[4] = 3.91720e+00;
+ if(fkIsDataRecoWith1PadTPCCluster){
+ // Home made parameterization for LHC10f6a production = p+p 7 TeV
+ fAlephParameters[0] = 0.04;
+ fAlephParameters[1] = 17.5;
+ fAlephParameters[2] = 3.4e-09;
+ fAlephParameters[3] = 2.15;
+ fAlephParameters[4] = 3.91720e+00;
+
+ // Home made parameterization for LHC10e13 production = p+p 900 GeV/c
+ }
+ else {
+ // Reasonable parameters extracted for p-p simulation (LHC09a4) - A.Kalweit
+ // fAlephParameters[0] = 4.23232575531564326e+00/50;//50*0.76176e-1;
+ // fAlephParameters[1] = 8.68482806165147636e+00;//10.632;
+ // fAlephParameters[2] = 1.34000000000000005e-05;//0.13279e-4;
+ // fAlephParameters[3] = 2.30445734159456084e+00;//1.8631;
+ // fAlephParameters[4] = 2.25624744086878559e+00;//1.9479;
+
+ // Param for LHC09d10 prod - A.Kalweit
+ fAlephParameters[0] = 2.15898e+00/50.;
+ fAlephParameters[1] = 1.75295e+01;
+ fAlephParameters[2] = 3.40030e-09;
+ fAlephParameters[3] = 1.96178e+00;
+ fAlephParameters[4] = 3.91720e+00;
+ }
+ Printf("CheckPerfCascade - Check Aleph Param in case of MC Data (fAlephParameters[3] = %f) (To be compared with : 2.15 for 1-pad-cluster prod. / 1.96178 otherwise)\n", fAlephParameters[3]);
fESDpid = new AliESDpid();
fESDpid->GetTPCResponse().SetBetheBlochParameters( fAlephParameters[0],
fAlephParameters[4] );
}
+
+if(! fESDtrackCuts ){
+ fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE); // Std definition of primary (see kTRUE argument) tracks for 2010
+ fESDtrackCuts->SetEtaRange(-0.8,+0.8);
+ fESDtrackCuts->SetPtRange(0.15, 1e10);
+ Printf("CheckCascade - ESDtrackCuts set up to 2010 std ITS-TPC cuts...");
+}
+
+
/*
if( !fPaveTextBookKeeping){
fPaveTextBookKeeping = new TPaveText(0.1, 0.1, 0.9, 0.9,"NDC");
fListHistCascade->Add(fHistMCTrackMultiplicity);
}
+ // - Resolution of the multiplicity estimator
+ if(! f2dHistRecoMultVsMCMult){
+ f2dHistRecoMultVsMCMult = new TH2F("f2dHistRecoMultVsMCMult", "Resolution of the multiplicity estimator (prim. tracks); Reco Multiplicity (prim. tracks); MC multiplicity (gen. part.)", 150, 0., 150., 150, 0., 150.);
+ fListHistCascade->Add(f2dHistRecoMultVsMCMult);
+ }
+
if (!fHistEtaGenProton) {
fHistEtaGenProton = new TH1F("fHistEtaGenProton", "#eta of any gen. p^{+};#eta;Number of prim. protons", 200, -10, 10);
fListHistCascade->Add(fHistEtaGenProton);
}
if (!f2dHistGenPtVsGenYGenXiMinus) {
- f2dHistGenPtVsGenYGenXiMinus = new TH2F("f2dHistGenPtVsGenYGenXiMinus", "MC P_{t} Vs MC Y of Gen #Xi^{-} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYGenXiMinus = new TH2F("f2dHistGenPtVsGenYGenXiMinus", "MC P_{t} Vs MC Y of Gen #Xi^{-} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYGenXiMinus);
}
}
if (!f2dHistGenPtVsGenYFdblXiMinus) {
- f2dHistGenPtVsGenYFdblXiMinus = new TH2F("f2dHistGenPtVsGenYFdblXiMinus", "MC P_{t} Vs MC Y of findable Gen #Xi^{-}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYFdblXiMinus = new TH2F("f2dHistGenPtVsGenYFdblXiMinus", "MC P_{t} Vs MC Y of findable Gen #Xi^{-}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYFdblXiMinus);
}
}
if (!f2dHistGenPtVsGenYGenXiPlus) {
- f2dHistGenPtVsGenYGenXiPlus = new TH2F("f2dHistGenPtVsGenYGenXiPlus", "MC P_{t} Vs MC Y of Gen #Xi^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYGenXiPlus = new TH2F("f2dHistGenPtVsGenYGenXiPlus", "MC P_{t} Vs MC Y of Gen #Xi^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYGenXiPlus);
}
}
if (!f2dHistGenPtVsGenYFdblXiPlus) {
- f2dHistGenPtVsGenYFdblXiPlus = new TH2F("f2dHistGenPtVsGenYFdblXiPlus", "MC P_{t} Vs MC Y of findable Gen #Xi^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYFdblXiPlus = new TH2F("f2dHistGenPtVsGenYFdblXiPlus", "MC P_{t} Vs MC Y of findable Gen #Xi^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYFdblXiPlus);
}
}
if (!f2dHistGenPtVsGenYGenOmegaMinus) {
- f2dHistGenPtVsGenYGenOmegaMinus = new TH2F("f2dHistGenPtVsGenYGenOmegaMinus", "MC P_{t} Vs MC Y of Gen #Omega^{-} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYGenOmegaMinus = new TH2F("f2dHistGenPtVsGenYGenOmegaMinus", "MC P_{t} Vs MC Y of Gen #Omega^{-} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYGenOmegaMinus);
}
}
if (!f2dHistGenPtVsGenYFdblOmegaMinus) {
- f2dHistGenPtVsGenYFdblOmegaMinus = new TH2F("f2dHistGenPtVsGenYFdblOmegaMinus", "MC P_{t} Vs MC Y of findable Gen #Omega^{-}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYFdblOmegaMinus = new TH2F("f2dHistGenPtVsGenYFdblOmegaMinus", "MC P_{t} Vs MC Y of findable Gen #Omega^{-}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYFdblOmegaMinus);
}
}
if (!f2dHistGenPtVsGenYGenOmegaPlus) {
- f2dHistGenPtVsGenYGenOmegaPlus = new TH2F("f2dHistGenPtVsGenYGenOmegaPlus", "MC P_{t} Vs MC Y of Gen #Omega^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYGenOmegaPlus = new TH2F("f2dHistGenPtVsGenYGenOmegaPlus", "MC P_{t} Vs MC Y of Gen #Omega^{+} ;Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYGenOmegaPlus);
}
}
if (!f2dHistGenPtVsGenYFdblOmegaPlus) {
- f2dHistGenPtVsGenYFdblOmegaPlus = new TH2F("f2dHistGenPtVsGenYFdblOmegaPlus", "MC P_{t} Vs MC Y of findable Gen #Omega^{+}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistGenPtVsGenYFdblOmegaPlus = new TH2F("f2dHistGenPtVsGenYFdblOmegaPlus", "MC P_{t} Vs MC Y of findable Gen #Omega^{+}; Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistGenPtVsGenYFdblOmegaPlus);
}
// - Effective mass histos for cascades candidates.
if (! fHistMassXiMinus) {
- fHistMassXiMinus = new TH1F("fHistMassXiMinus","#Xi^{-} candidates;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 200,1.2,2.0);
+ fHistMassXiMinus = new TH1F("fHistMassXiMinus","#Xi^{-} candidates;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 400,1.2,2.0);
fListHistCascade->Add(fHistMassXiMinus);
}
if (! fHistMassXiPlus) {
- fHistMassXiPlus = new TH1F("fHistMassXiPlus","#Xi^{+} candidates;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",200,1.2,2.0);
+ fHistMassXiPlus = new TH1F("fHistMassXiPlus","#Xi^{+} candidates;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",400,1.2,2.0);
fListHistCascade->Add(fHistMassXiPlus);
}
if (! fHistMassOmegaMinus) {
- fHistMassOmegaMinus = new TH1F("fHistMassOmegaMinus","#Omega^{-} candidates;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassOmegaMinus = new TH1F("fHistMassOmegaMinus","#Omega^{-} candidates;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassOmegaMinus);
}
if (! fHistMassOmegaPlus) {
- fHistMassOmegaPlus = new TH1F("fHistMassOmegaPlus","#Omega^{+} candidates;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassOmegaPlus = new TH1F("fHistMassOmegaPlus","#Omega^{+} candidates;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassOmegaPlus);
}
// - Effective mass histos with combined PID
if (! fHistMassWithCombPIDXiMinus) {
- fHistMassWithCombPIDXiMinus = new TH1F("fHistMassWithCombPIDXiMinus","#Xi^{-} candidates, with Bach. comb. PID;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 200,1.2,2.0);
+ fHistMassWithCombPIDXiMinus = new TH1F("fHistMassWithCombPIDXiMinus","#Xi^{-} candidates, with Bach. comb. PID;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 400,1.2,2.0);
fListHistCascade->Add(fHistMassWithCombPIDXiMinus);
}
if (! fHistMassWithCombPIDXiPlus) {
- fHistMassWithCombPIDXiPlus = new TH1F("fHistMassWithCombPIDXiPlus","#Xi^{+} candidates, with Bach. comb. PID;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",200,1.2,2.0);
+ fHistMassWithCombPIDXiPlus = new TH1F("fHistMassWithCombPIDXiPlus","#Xi^{+} candidates, with Bach. comb. PID;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",400,1.2,2.0);
fListHistCascade->Add(fHistMassWithCombPIDXiPlus);
}
if (! fHistMassWithCombPIDOmegaMinus) {
- fHistMassWithCombPIDOmegaMinus = new TH1F("fHistMassWithCombPIDOmegaMinus","#Omega^{-} candidates, with Bach. comb. PID;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassWithCombPIDOmegaMinus = new TH1F("fHistMassWithCombPIDOmegaMinus","#Omega^{-} candidates, with Bach. comb. PID;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassWithCombPIDOmegaMinus);
}
if (! fHistMassWithCombPIDOmegaPlus) {
- fHistMassWithCombPIDOmegaPlus = new TH1F("fHistMassWithCombPIDOmegaPlus","#Omega^{+} candidates, with Bach. comb. PID;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassWithCombPIDOmegaPlus = new TH1F("fHistMassWithCombPIDOmegaPlus","#Omega^{+} candidates, with Bach. comb. PID;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassWithCombPIDOmegaPlus);
}
// - Effective mass histos with perfect MC PID on the bachelor
if (! fHistMassWithMcPIDXiMinus) {
- fHistMassWithMcPIDXiMinus = new TH1F("fHistMassWithMcPIDXiMinus","#Xi^{-} candidates, with Bach. MC PID;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 200,1.2,2.0);
+ fHistMassWithMcPIDXiMinus = new TH1F("fHistMassWithMcPIDXiMinus","#Xi^{-} candidates, with Bach. MC PID;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 400,1.2,2.0);
fListHistCascade->Add(fHistMassWithMcPIDXiMinus);
}
if (! fHistMassWithMcPIDXiPlus) {
- fHistMassWithMcPIDXiPlus = new TH1F("fHistMassWithMcPIDXiPlus","#Xi^{+} candidates, with Bach. MC PID;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",200,1.2,2.0);
+ fHistMassWithMcPIDXiPlus = new TH1F("fHistMassWithMcPIDXiPlus","#Xi^{+} candidates, with Bach. MC PID;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",400,1.2,2.0);
fListHistCascade->Add(fHistMassWithMcPIDXiPlus);
}
if (! fHistMassWithMcPIDOmegaMinus) {
- fHistMassWithMcPIDOmegaMinus = new TH1F("fHistMassWithMcPIDOmegaMinus","#Omega^{-} candidates, with Bach. MC PID;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassWithMcPIDOmegaMinus = new TH1F("fHistMassWithMcPIDOmegaMinus","#Omega^{-} candidates, with Bach. MC PID;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassWithMcPIDOmegaMinus);
}
if (! fHistMassWithMcPIDOmegaPlus) {
- fHistMassWithMcPIDOmegaPlus = new TH1F("fHistMassWithMcPIDOmegaPlus","#Omega^{+} candidates, with Bach. MC PID;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistMassWithMcPIDOmegaPlus = new TH1F("fHistMassWithMcPIDOmegaPlus","#Omega^{+} candidates, with Bach. MC PID;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistMassWithMcPIDOmegaPlus);
}
// - Effective mass histos for cascades candidates ASSOCIATED with MC.
if (! fHistAsMCMassXiMinus) {
- fHistAsMCMassXiMinus = new TH1F("fHistAsMCMassXiMinus","#Xi^{-} candidates associated to MC;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 200,1.2,2.0);
+ fHistAsMCMassXiMinus = new TH1F("fHistAsMCMassXiMinus","#Xi^{-} candidates associated to MC;M( #Lambda , #pi^{-} ) (GeV/c^{2});Counts", 400,1.2,2.0);
fListHistCascade->Add(fHistAsMCMassXiMinus);
}
if (! fHistAsMCMassXiPlus) {
- fHistAsMCMassXiPlus = new TH1F("fHistAsMCMassXiPlus","#Xi^{+} candidates associated to MC;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",200,1.2,2.0);
+ fHistAsMCMassXiPlus = new TH1F("fHistAsMCMassXiPlus","#Xi^{+} candidates associated to MC;M( #bar{#Lambda}^{0} , #pi^{+} ) (GeV/c^{2});Counts",400,1.2,2.0);
fListHistCascade->Add(fHistAsMCMassXiPlus);
}
if (! fHistAsMCMassOmegaMinus) {
- fHistAsMCMassOmegaMinus = new TH1F("fHistAsMCMassOmegaMinus","#Omega^{-} candidates associated to MC;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistAsMCMassOmegaMinus = new TH1F("fHistAsMCMassOmegaMinus","#Omega^{-} candidates associated to MC;M( #Lambda , K^{-} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistAsMCMassOmegaMinus);
}
if (! fHistAsMCMassOmegaPlus) {
- fHistAsMCMassOmegaPlus = new TH1F("fHistAsMCMassOmegaPlus","#Omega^{+} candidates associated to MC;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 250,1.5,2.5);
+ fHistAsMCMassOmegaPlus = new TH1F("fHistAsMCMassOmegaPlus","#Omega^{+} candidates associated to MC;M( #bar{#Lambda}^{0} , K^{+} ) (GeV/c^{2});Counts", 500,1.5,2.5);
fListHistCascade->Add(fHistAsMCMassOmegaPlus);
}
// + having the proper maximum proba of combined PID for the bachelor
if (!f2dHistAsMCandCombPIDGenPtVsGenYXiMinus) {
- f2dHistAsMCandCombPIDGenPtVsGenYXiMinus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYXiMinus", "MC P_{t} Vs MC Y of #Xi^{-} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCandCombPIDGenPtVsGenYXiMinus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYXiMinus", "MC P_{t} Vs MC Y of #Xi^{-} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCandCombPIDGenPtVsGenYXiMinus);
}
if (!f2dHistAsMCandCombPIDGenPtVsGenYXiPlus) {
- f2dHistAsMCandCombPIDGenPtVsGenYXiPlus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYXiPlus", "MC P_{t} Vs MC Y of #Xi^{+} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCandCombPIDGenPtVsGenYXiPlus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYXiPlus", "MC P_{t} Vs MC Y of #Xi^{+} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCandCombPIDGenPtVsGenYXiPlus);
}
if (!f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus) {
- f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus", "MC P_{t} Vs MC Y of #Omega^{-} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus", "MC P_{t} Vs MC Y of #Omega^{-} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus);
}
if (!f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus) {
- f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus", "MC P_{t} Vs MC Y of #Omega^{+} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus = new TH2F("f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus", "MC P_{t} Vs MC Y of #Omega^{+} (associated+Bach.PID); Pt_{MC} (GeV/c); Y_{MC}", 200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus);
}
// - Generated Pt Vs Generated Y, for the cascade candidates associated with MC
if (!f2dHistAsMCGenPtVsGenYXiMinus) {
- f2dHistAsMCGenPtVsGenYXiMinus = new TH2F("f2dHistAsMCGenPtVsGenYXiMinus", "MC P_{t} Vs MC Y of gen. #Xi^{-} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCGenPtVsGenYXiMinus = new TH2F("f2dHistAsMCGenPtVsGenYXiMinus", "MC P_{t} Vs MC Y of gen. #Xi^{-} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCGenPtVsGenYXiMinus );
}
if (!f2dHistAsMCGenPtVsGenYXiPlus) {
- f2dHistAsMCGenPtVsGenYXiPlus = new TH2F("f2dHistAsMCGenPtVsGenYXiPlus", "MC P_{t} Vs MC Y of gen. #Xi^{+} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCGenPtVsGenYXiPlus = new TH2F("f2dHistAsMCGenPtVsGenYXiPlus", "MC P_{t} Vs MC Y of gen. #Xi^{+} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCGenPtVsGenYXiPlus );
}
if (!f2dHistAsMCGenPtVsGenYOmegaMinus) {
- f2dHistAsMCGenPtVsGenYOmegaMinus = new TH2F("f2dHistAsMCGenPtVsGenYOmegaMinus", "MC P_{t} Vs MC Y of gen. #Omega^{-} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCGenPtVsGenYOmegaMinus = new TH2F("f2dHistAsMCGenPtVsGenYOmegaMinus", "MC P_{t} Vs MC Y of gen. #Omega^{-} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCGenPtVsGenYOmegaMinus );
}
if (!f2dHistAsMCGenPtVsGenYOmegaPlus) {
- f2dHistAsMCGenPtVsGenYOmegaPlus = new TH2F("f2dHistAsMCGenPtVsGenYOmegaPlus", "MC P_{t} Vs MC Y of gen. #Omega^{+} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 240, -1.2, 1.2);
+ f2dHistAsMCGenPtVsGenYOmegaPlus = new TH2F("f2dHistAsMCGenPtVsGenYOmegaPlus", "MC P_{t} Vs MC Y of gen. #Omega^{+} (associated);Pt_{MC} (GeV/c); Rapidity, Y_{MC}",200, 0., 10., 220, -1.1, 1.1);
fListHistCascade->Add(f2dHistAsMCGenPtVsGenYOmegaPlus );
}
fListHistCascade->Add(f2dHistAsMCResROmegaPlus);
}
+ // - Resolution in phi as function of generated Pt
+
+ if(! f2dHistAsMCResPhiXiMinus) {
+ f2dHistAsMCResPhiXiMinus = new TH2F( "f2dHistAsMCResPhiXiMinus", "Resolution in #phi for #Xi^{-}; Pt_{MC} (GeV/c); #phi(MC) - #phi(reco) (deg)", 200, 0., 10., 60, -30., 30.);
+ fListHistCascade->Add(f2dHistAsMCResPhiXiMinus);
+ }
+ if(! f2dHistAsMCResPhiXiPlus) {
+ f2dHistAsMCResPhiXiPlus = new TH2F( "f2dHistAsMCResPhiXiPlus", "Resolution in #phi for #Xi^{+}; Pt_{MC} (GeV/c); #phi(MC) - #phi(reco) (deg)", 200, 0., 10., 60, -30., 30.);
+ fListHistCascade->Add(f2dHistAsMCResPhiXiPlus);
+ }
+
+ if(! f2dHistAsMCResPhiOmegaMinus) {
+ f2dHistAsMCResPhiOmegaMinus = new TH2F( "f2dHistAsMCResPhiOmegaMinus", "Resolution in #phi for #Omega^{-}; Pt_{MC} (GeV/c); #phi(MC) - #phi(reco) (deg)", 200, 0., 10., 60, -30., 30.);
+ fListHistCascade->Add(f2dHistAsMCResPhiOmegaMinus);
+ }
+
+ if(! f2dHistAsMCResPhiOmegaPlus) {
+ f2dHistAsMCResPhiOmegaPlus = new TH2F( "f2dHistAsMCResPhiOmegaPlus", "Resolution in #phi for #Omega^{+}; Pt_{MC} (GeV/c); #phi(MC) - #phi(reco) (deg)", 200, 0., 10., 60, -30., 30.);
+ fListHistCascade->Add(f2dHistAsMCResPhiOmegaPlus);
+ }
// - PID container
const Int_t lNbVariables = 4 ;
//array for the number of bins in each dimension :
- Int_t lNbBinsPerVar[4];
+ Int_t lNbBinsPerVar[4] = {0};
lNbBinsPerVar[0] = 200;
lNbBinsPerVar[1] = 400;
- lNbBinsPerVar[2] = 48;
+ lNbBinsPerVar[2] = 44;
lNbBinsPerVar[3] = 250;
//setting the bin limits (valid for v4-18-10-AN)
fCFContCascadePIDAsXiMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsXiMinus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
- fCFContCascadePIDAsXiMinus->SetBinLimits(2, -1.2 , 1.2 ); // Rapidity
+ fCFContCascadePIDAsXiMinus->SetBinLimits(2, -1.1 , 1.1 ); // Rapidity
if(fCollidingSystems)
- fCFContCascadePIDAsXiMinus->SetBinLimits(3, 0.0, 20000.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsXiMinus->SetBinLimits(3, 0.0, 20000.0 ); // nTrackPrimaryMultiplicity
else
- fCFContCascadePIDAsXiMinus->SetBinLimits(3, 0.0, 250.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsXiMinus->SetBinLimits(3, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
// Setting the step title : one per PID case
fCFContCascadePIDAsXiMinus->SetStepTitle(0, "No PID");
- fCFContCascadePIDAsXiMinus->SetStepTitle(1, "TPC PID / 3-#sigma cut on Bachelor track");
- fCFContCascadePIDAsXiMinus->SetStepTitle(2, "TPC PID / 3-#sigma cut on Bachelor+Baryon tracks");
- fCFContCascadePIDAsXiMinus->SetStepTitle(3, "TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks");
+ fCFContCascadePIDAsXiMinus->SetStepTitle(1, "TPC PID / 4-#sigma cut on Bachelor track");
+ fCFContCascadePIDAsXiMinus->SetStepTitle(2, "TPC PID / 4-#sigma cut on Bachelor+Baryon tracks");
+ fCFContCascadePIDAsXiMinus->SetStepTitle(3, "TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks");
fCFContCascadePIDAsXiMinus->SetStepTitle(4, "Comb. PID / Bachelor");
fCFContCascadePIDAsXiMinus->SetStepTitle(5, "Comb. PID / Bachelor+Baryon");
fCFContCascadePIDAsXiMinus->SetStepTitle(6, "Comb. PID / Bachelor+Baryon+Meson");
fCFContCascadePIDAsXiMinus->SetVarTitle(0, "Pt_{cascade} (GeV/c)");
fCFContCascadePIDAsXiMinus->SetVarTitle(1, "M( #Lambda , #pi^{-} ) (GeV/c^{2})");
fCFContCascadePIDAsXiMinus->SetVarTitle(2, "Y_{#Xi}");
- fCFContCascadePIDAsXiMinus->SetVarTitle(3, "TPCrefit track Multiplicity");
+ fCFContCascadePIDAsXiMinus->SetVarTitle(3, "Primary Track Multiplicity");
fListHistCascade->Add(fCFContCascadePIDAsXiMinus);
const Int_t lNbVariables = 4 ;
//array for the number of bins in each dimension :
- Int_t lNbBinsPerVar[4];
+ Int_t lNbBinsPerVar[4] = {0};
lNbBinsPerVar[0] = 200;
lNbBinsPerVar[1] = 400;
- lNbBinsPerVar[2] = 48;
+ lNbBinsPerVar[2] = 44;
lNbBinsPerVar[3] = 250;
//setting the bin limits (valid for v4-18-10-AN)
fCFContCascadePIDAsXiPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsXiPlus->SetBinLimits(1, 1.2 , 2.0 ); // Xi Effective mass
- fCFContCascadePIDAsXiPlus->SetBinLimits(2, -1.2 , 1.2 ); // Rapidity
+ fCFContCascadePIDAsXiPlus->SetBinLimits(2, -1.1 , 1.1 ); // Rapidity
if(fCollidingSystems)
- fCFContCascadePIDAsXiPlus->SetBinLimits(3, 0.0, 20000.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsXiPlus->SetBinLimits(3, 0.0, 20000.0 ); // nTrackPrimaryMultiplicity
else
- fCFContCascadePIDAsXiPlus->SetBinLimits(3, 0.0, 250.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsXiPlus->SetBinLimits(3, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
// Setting the step title : one per PID case
fCFContCascadePIDAsXiPlus->SetStepTitle(0, "No PID");
- fCFContCascadePIDAsXiPlus->SetStepTitle(1, "TPC PID / 3-#sigma cut on Bachelor track");
- fCFContCascadePIDAsXiPlus->SetStepTitle(2, "TPC PID / 3-#sigma cut on Bachelor+Baryon tracks");
- fCFContCascadePIDAsXiPlus->SetStepTitle(3, "TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks");
+ fCFContCascadePIDAsXiPlus->SetStepTitle(1, "TPC PID / 4-#sigma cut on Bachelor track");
+ fCFContCascadePIDAsXiPlus->SetStepTitle(2, "TPC PID / 4-#sigma cut on Bachelor+Baryon tracks");
+ fCFContCascadePIDAsXiPlus->SetStepTitle(3, "TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks");
fCFContCascadePIDAsXiPlus->SetStepTitle(4, "Comb. PID / Bachelor");
fCFContCascadePIDAsXiPlus->SetStepTitle(5, "Comb. PID / Bachelor+Baryon");
fCFContCascadePIDAsXiPlus->SetStepTitle(6, "Comb. PID / Bachelor+Baryon+Meson");
fCFContCascadePIDAsXiPlus->SetVarTitle(0, "Pt_{cascade} (GeV/c)");
fCFContCascadePIDAsXiPlus->SetVarTitle(1, "M( #Lambda , #pi^{+} ) (GeV/c^{2})");
fCFContCascadePIDAsXiPlus->SetVarTitle(2, "Y_{#Xi}");
- fCFContCascadePIDAsXiPlus->SetVarTitle(3, "TPCrefit track Multiplicity");
+ fCFContCascadePIDAsXiPlus->SetVarTitle(3, "Primary Track Multiplicity");
fListHistCascade->Add(fCFContCascadePIDAsXiPlus);
const Int_t lNbVariables = 4 ;
//array for the number of bins in each dimension :
- Int_t lNbBinsPerVar[4];
+ Int_t lNbBinsPerVar[4] = {0};
lNbBinsPerVar[0] = 200;
lNbBinsPerVar[1] = 500;
- lNbBinsPerVar[2] = 48;
+ lNbBinsPerVar[2] = 44;
lNbBinsPerVar[3] = 250;
//setting the bin limits (valid for v4-18-10-AN)
fCFContCascadePIDAsOmegaMinus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsOmegaMinus->SetBinLimits(1, 1.5 , 2.5 ); // Omega Effective mass
- fCFContCascadePIDAsOmegaMinus->SetBinLimits(2, -1.2 , 1.2 ); // Rapidity
+ fCFContCascadePIDAsOmegaMinus->SetBinLimits(2, -1.1 , 1.1 ); // Rapidity
if(fCollidingSystems)
- fCFContCascadePIDAsOmegaMinus->SetBinLimits(3, 0.0, 20000.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsOmegaMinus->SetBinLimits(3, 0.0, 20000.0 ); // nTrackPrimaryMultiplicity
else
- fCFContCascadePIDAsOmegaMinus->SetBinLimits(3, 0.0, 250.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsOmegaMinus->SetBinLimits(3, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
// Setting the step title : one per PID case
fCFContCascadePIDAsOmegaMinus->SetStepTitle(0, "No PID");
- fCFContCascadePIDAsOmegaMinus->SetStepTitle(1, "TPC PID / 3-#sigma cut on Bachelor track");
- fCFContCascadePIDAsOmegaMinus->SetStepTitle(2, "TPC PID / 3-#sigma cut on Bachelor+Baryon tracks");
- fCFContCascadePIDAsOmegaMinus->SetStepTitle(3, "TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks");
+ fCFContCascadePIDAsOmegaMinus->SetStepTitle(1, "TPC PID / 4-#sigma cut on Bachelor track");
+ fCFContCascadePIDAsOmegaMinus->SetStepTitle(2, "TPC PID / 4-#sigma cut on Bachelor+Baryon tracks");
+ fCFContCascadePIDAsOmegaMinus->SetStepTitle(3, "TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks");
fCFContCascadePIDAsOmegaMinus->SetStepTitle(4, "Comb. PID / Bachelor");
fCFContCascadePIDAsOmegaMinus->SetStepTitle(5, "Comb. PID / Bachelor+Baryon");
fCFContCascadePIDAsOmegaMinus->SetStepTitle(6, "Comb. PID / Bachelor+Baryon+Meson");
fCFContCascadePIDAsOmegaMinus->SetVarTitle(0, "Pt_{cascade} (GeV/c)");
fCFContCascadePIDAsOmegaMinus->SetVarTitle(1, "M( #Lambda , K^{-} ) (GeV/c^{2})");
fCFContCascadePIDAsOmegaMinus->SetVarTitle(2, "Y_{#Omega}");
- fCFContCascadePIDAsOmegaMinus->SetVarTitle(3, "TPCrefit track Multiplicity");
+ fCFContCascadePIDAsOmegaMinus->SetVarTitle(3, "Primary Track Multiplicity");
fListHistCascade->Add(fCFContCascadePIDAsOmegaMinus);
const Int_t lNbVariables = 4 ;
//array for the number of bins in each dimension :
- Int_t lNbBinsPerVar[4];
+ Int_t lNbBinsPerVar[4]= {0};
lNbBinsPerVar[0] = 200;
lNbBinsPerVar[1] = 500;
- lNbBinsPerVar[2] = 48;
+ lNbBinsPerVar[2] = 44;
lNbBinsPerVar[3] = 250;
//setting the bin limits (valid for v4-18-10-AN)
fCFContCascadePIDAsOmegaPlus->SetBinLimits(0, 0.0 , 10.0 ); // Pt(Cascade)
fCFContCascadePIDAsOmegaPlus->SetBinLimits(1, 1.5 , 2.5 ); // Omega Effective mass
- fCFContCascadePIDAsOmegaPlus->SetBinLimits(2, -1.2 , 1.2 ); // Rapidity
+ fCFContCascadePIDAsOmegaPlus->SetBinLimits(2, -1.1 , 1.1 ); // Rapidity
if(fCollidingSystems)
- fCFContCascadePIDAsOmegaPlus->SetBinLimits(3, 0.0, 20000.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsOmegaPlus->SetBinLimits(3, 0.0, 20000.0 ); // nTrackPrimaryMultiplicity
else
- fCFContCascadePIDAsOmegaPlus->SetBinLimits(3, 0.0, 250.0 ); // TPCrefitTrackMultiplicity
+ fCFContCascadePIDAsOmegaPlus->SetBinLimits(3, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
// Setting the step title : one per PID case
fCFContCascadePIDAsOmegaPlus->SetStepTitle(0, "No PID");
- fCFContCascadePIDAsOmegaPlus->SetStepTitle(1, "TPC PID / 3-#sigma cut on Bachelor track");
- fCFContCascadePIDAsOmegaPlus->SetStepTitle(2, "TPC PID / 3-#sigma cut on Bachelor+Baryon tracks");
- fCFContCascadePIDAsOmegaPlus->SetStepTitle(3, "TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks");
+ fCFContCascadePIDAsOmegaPlus->SetStepTitle(1, "TPC PID / 4-#sigma cut on Bachelor track");
+ fCFContCascadePIDAsOmegaPlus->SetStepTitle(2, "TPC PID / 4-#sigma cut on Bachelor+Baryon tracks");
+ fCFContCascadePIDAsOmegaPlus->SetStepTitle(3, "TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks");
fCFContCascadePIDAsOmegaPlus->SetStepTitle(4, "Comb. PID / Bachelor");
fCFContCascadePIDAsOmegaPlus->SetStepTitle(5, "Comb. PID / Bachelor+Baryon");
fCFContCascadePIDAsOmegaPlus->SetStepTitle(6, "Comb. PID / Bachelor+Baryon+Meson");
fCFContCascadePIDAsOmegaPlus->SetVarTitle(0, "Pt_{cascade} (GeV/c)");
fCFContCascadePIDAsOmegaPlus->SetVarTitle(1, "M( #Lambda , K^{+} ) (GeV/c^{2})");
fCFContCascadePIDAsOmegaPlus->SetVarTitle(2, "Y_{#Omega}");
- fCFContCascadePIDAsOmegaPlus->SetVarTitle(3, "TPCrefit track Multiplicity");
+ fCFContCascadePIDAsOmegaPlus->SetVarTitle(3, "Primary Track Multiplicity");
fListHistCascade->Add(fCFContCascadePIDAsOmegaPlus);
const Int_t lNbVariables = 20 ;
//array for the number of bins in each dimension :
- Int_t lNbBinsPerVar[20];
+ Int_t lNbBinsPerVar[20] = {0};
lNbBinsPerVar[0] = 25;
lNbBinsPerVar[1] = 25;
lNbBinsPerVar[2] = 20;
lNbBinsPerVar[3] = 40;
- lNbBinsPerVar[4] = 50;
- lNbBinsPerVar[5] = 12;
+ lNbBinsPerVar[4] = 30;
+ lNbBinsPerVar[5] = 25;
lNbBinsPerVar[6] = 20;
lNbBinsPerVar[7] = 40;
lNbBinsPerVar[9] = 25;
lNbBinsPerVar[10] = 25;
- lNbBinsPerVar[11] = 100; // 2-MeV/c2 bins
- lNbBinsPerVar[12] = 100; // 2-MeV/c2 bins
+ lNbBinsPerVar[11] = 75; // 2-MeV/c2 bins
+ lNbBinsPerVar[12] = 60; // 2-MeV/c2 bins
- lNbBinsPerVar[13] = 20;
+ lNbBinsPerVar[13] = 100;
lNbBinsPerVar[14] = 44; // 0.05 in rapidity units
lNbBinsPerVar[15] = 44; // 0.05 in rapidity units
lNbBinsPerVar[16] = 20;
lNbBinsPerVar[17] = 50;
- lNbBinsPerVar[18] = 50;
- lNbBinsPerVar[19] = 35;
-
- fCFContAsCascadeCuts = new AliCFContainer("fCFContAsCascadeCuts","Cut Container for Asso. Cascades", lNbSteps, lNbVariables, lNbBinsPerVar );
+ lNbBinsPerVar[18] = 100;
+ lNbBinsPerVar[19] = 24;
+
+
+ fCFContAsCascadeCuts = new AliCFContainer("fCFContAsCascadeCuts","Cut Container for Asso. Cascades", lNbSteps, lNbVariables, lNbBinsPerVar );
+
+ //0
+ Double_t *lBinLim0 = new Double_t[ lNbBinsPerVar[0]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[0];i++) lBinLim0[i] = (Double_t)0.0 + (4.8 - 0.0 )/(lNbBinsPerVar[0]-1) * (Double_t)i ;
+ lBinLim0[ lNbBinsPerVar[0] ] = 20.0;
+ fCFContAsCascadeCuts -> SetBinLimits(0, lBinLim0 ); // DcaXiDaughters : 0.0 to 5.0
+ delete [] lBinLim0;
+ //1
+ Double_t *lBinLim1 = new Double_t[ lNbBinsPerVar[1]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[1];i++) lBinLim1[i] = (Double_t)0.0 + (0.24 - 0.0 )/(lNbBinsPerVar[1]-1) * (Double_t)i ;
+ lBinLim1[ lNbBinsPerVar[1] ] = 100.0;
+ fCFContAsCascadeCuts -> SetBinLimits(1, lBinLim1 ); // DcaBachToPrimVertexXi : 0.0 to 0.25
+ delete [] lBinLim1;
+ //2
+ Double_t *lBinLim2 = new Double_t[ lNbBinsPerVar[2]+1 ];
+ for(Int_t i=1; i< lNbBinsPerVar[2]+1;i++) lBinLim2[i] = (Double_t)0.81 + (1.0 - 0.81 )/(lNbBinsPerVar[2]-1) * (Double_t) (i-1) ;
+ lBinLim2[0] = 0.0;
+ fCFContAsCascadeCuts -> SetBinLimits(2, lBinLim2 ); // XiCosineOfPointingAngle : 0.80 to 1.0
+ delete [] lBinLim2;
+ //3
+ Double_t *lBinLim3 = new Double_t[ lNbBinsPerVar[3]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[3];i++) lBinLim3[i] = (Double_t)0.0 + (3.9 - 0.0 )/(lNbBinsPerVar[3]-1) * (Double_t)i ;
+ lBinLim3[ lNbBinsPerVar[3] ] = 110.0;
+ fCFContAsCascadeCuts -> SetBinLimits(3, lBinLim3 ); // XiRadius : 0.0 to 4.0
+ delete [] lBinLim3;
+ //4
+ fCFContAsCascadeCuts->SetBinLimits(4, 1.1 , 1.13 ); // InvMassLambdaAsCascDghter
+ //5
+ Double_t *lBinLim5 = new Double_t[ lNbBinsPerVar[5]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[5];i++) lBinLim5[i] = (Double_t)0.0 + (4.8 - 0.0 )/(lNbBinsPerVar[5]-1) * (Double_t)i ;
+ lBinLim5[ lNbBinsPerVar[5] ] = 20.0;
+ fCFContAsCascadeCuts -> SetBinLimits(5, lBinLim5 ); // DcaV0DaughtersXi : 0.0 to 5.0
+ delete [] lBinLim5;
+
+
+ //6
+ Double_t *lBinLim6 = new Double_t[ lNbBinsPerVar[6]+1 ];
+ for(Int_t i=1; i< lNbBinsPerVar[6]+1 ;i++) lBinLim6[i] = (Double_t)0.81 + (1.0 - 0.81 )/(lNbBinsPerVar[6]-1) * (Double_t) (i-1) ;
+ lBinLim6[0] = 0.0;
+ fCFContAsCascadeCuts -> SetBinLimits(6, lBinLim6 ); // V0CosineOfPointingAngleXi : 0.80 to 1.0
+ delete [] lBinLim6;
+ //7
+ Double_t *lBinLim7 = new Double_t[ lNbBinsPerVar[7]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[7];i++) lBinLim7[i] = (Double_t)0.0 + (7.8 - 0.0 )/(lNbBinsPerVar[7]-1) * (Double_t)i ;
+ lBinLim7[ lNbBinsPerVar[7] ] = 100.0;
+ fCFContAsCascadeCuts -> SetBinLimits(7, lBinLim7 ); // V0RadiusXi : 0.0 to 8.0
+ delete [] lBinLim7;
+ //8
+ Double_t *lBinLim8 = new Double_t[ lNbBinsPerVar[8]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[8];i++) lBinLim8[i] = (Double_t)0.0 + (0.39 - 0.0 )/(lNbBinsPerVar[8]-1) * (Double_t)i ;
+ lBinLim8[ lNbBinsPerVar[8] ] = 100.0;
+ fCFContAsCascadeCuts -> SetBinLimits(8, lBinLim8 ); // DcaV0ToPrimVertexXi : 0.0 to 0.4
+ delete [] lBinLim8;
+ //9
+ Double_t *lBinLim9 = new Double_t[ lNbBinsPerVar[9]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[9];i++) lBinLim9[i] = (Double_t)0.0 + (0.24 - 0.0 )/(lNbBinsPerVar[9]-1) * (Double_t)i ;
+ lBinLim9[ lNbBinsPerVar[9] ] = 100.0;
+ fCFContAsCascadeCuts -> SetBinLimits(9, lBinLim9 ); // DcaPosToPrimVertexXi : 0.0 to 0.25
+ delete [] lBinLim9;
+ //10
+ Double_t *lBinLim10 = new Double_t[ lNbBinsPerVar[10]+1 ];
+ for(Int_t i=0; i< lNbBinsPerVar[10];i++) lBinLim10[i] = (Double_t)0.0 + (0.24 - 0.0 )/(lNbBinsPerVar[10]-1) * (Double_t)i ;
+ lBinLim10[ lNbBinsPerVar[10] ] = 100.0;
+ fCFContAsCascadeCuts -> SetBinLimits(10, lBinLim10 ); // DcaPosToPrimVertexXi : 0.0 to 0.25
+ delete [] lBinLim10;
+
+
+ //11
+ fCFContAsCascadeCuts->SetBinLimits(11, 1.25 , 1.40 ); // InvMassXi
+ fCFContAsCascadeCuts->SetBinLimits(12, 1.62 , 1.74 ); // InvMassOmega
+ fCFContAsCascadeCuts->SetBinLimits(13, 0.0 , 10.0 ); // XiTransvMom
+ fCFContAsCascadeCuts->SetBinLimits(14, -1.1 , 1.1 ); // Y(Xi)
+ fCFContAsCascadeCuts->SetBinLimits(15, -1.1 , 1.1 ); // Y(Omega)
+ fCFContAsCascadeCuts->SetBinLimits(16, -10.0 , 10.0 ); // BestPrimaryVtxPosZ
+ if(fCollidingSystems){
+ fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 10000.0 ); // nTrackPrimaryMultiplicity
+ fCFContAsCascadeCuts->SetBinLimits(18, 0.0, 10000.0 ); // SPDTrackletsMultiplicity
+ }
+ else{
+ fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
+ fCFContAsCascadeCuts->SetBinLimits(18, 0.0, 200.0 ); // SPDTrackletsMultiplicity
+ }
+ fCFContAsCascadeCuts->SetBinLimits(19, 68.0 ,164.0 ); // BachTPCClusters
- //setting the bin limits (valid for v4-18-10-AN on)
- fCFContAsCascadeCuts->SetBinLimits(0, 0.0 , 0.25 ); // DcaXiDaughters
+ // Regular binning definition (valid for v4-18-10-AN on)
+ /*
+ //setting the bin limits
+ fCFContAsCascadeCuts->SetBinLimits(0, 0.0 , 2.5 ); // DcaXiDaughters
fCFContAsCascadeCuts->SetBinLimits(1, 0.0 , 0.25 ); // DcaBachToPrimVertexXi
- fCFContAsCascadeCuts->SetBinLimits(2, 0.995, 1.0 ); // XiCosineOfPointingAngle
+ fCFContAsCascadeCuts->SetBinLimits(2, 0.99 , 1.0 ); // XiCosineOfPointingAngle
fCFContAsCascadeCuts->SetBinLimits(3, 0.0 , 4.0 ); // XiRadius
fCFContAsCascadeCuts->SetBinLimits(4, 1.1 , 1.15 ); // InvMassLambdaAsCascDghter
- fCFContAsCascadeCuts->SetBinLimits(5, 0.0 , 0.6 ); // DcaV0DaughtersXi
+ fCFContAsCascadeCuts->SetBinLimits(5, 0.0 , 1.0 ); // DcaV0DaughtersXi
fCFContAsCascadeCuts->SetBinLimits(6, 0.98 , 1.0 ); // V0CosineOfPointingAngleXi
fCFContAsCascadeCuts->SetBinLimits(7, 0.0 , 20.0 ); // V0RadiusXi
fCFContAsCascadeCuts->SetBinLimits(8, 0.0 , 1.0 ); // DcaV0ToPrimVertexXi
- fCFContAsCascadeCuts->SetBinLimits(9, 0.0 , 2.5 ); // DcaPosToPrimVertexXi
- fCFContAsCascadeCuts->SetBinLimits(10, 0.0 , 2.5 ); // DcaNegToPrimVertexXi
- fCFContAsCascadeCuts->SetBinLimits(11, 1.25 , 1.45 ); // InvMassXi
- fCFContAsCascadeCuts->SetBinLimits(12, 1.6 , 1.8 ); // InvMassOmega
+ fCFContAsCascadeCuts->SetBinLimits(9, 0.0 , 0.25 ); // DcaPosToPrimVertexXi
+ fCFContAsCascadeCuts->SetBinLimits(10, 0.0 , 0.25 ); // DcaNegToPrimVertexXi
+ fCFContAsCascadeCuts->SetBinLimits(11, 1.25 , 1.40 ); // InvMassXi
+ fCFContAsCascadeCuts->SetBinLimits(12, 1.62 , 1.74 ); // InvMassOmega
fCFContAsCascadeCuts->SetBinLimits(13, 0.0 , 10.0 ); // pt_MC(Xi)
fCFContAsCascadeCuts->SetBinLimits(14, -1.1 , 1.1 ); // Y_MC(Xi)
fCFContAsCascadeCuts->SetBinLimits(15, -1.1 , 1.1 ); // Y_MC(Omega)
fCFContAsCascadeCuts->SetBinLimits(16, -10.0 , 10.0 ); // BestPrimaryVtxPosZ
if(fCollidingSystems){
- fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 10000.0 ); // TPCrefitTrackMultiplicity
+ fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 10000.0 ); // nTrackPrimaryMultiplicity
fCFContAsCascadeCuts->SetBinLimits(18, 0.0, 10000.0 ); // SPDTrackletsMultiplicity
}
else{
- fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 250.0 ); // TPCrefitTrackMultiplicity
- fCFContAsCascadeCuts->SetBinLimits(18, 0.0, 250.0 ); // SPDTrackletsMultiplicity
+ fCFContAsCascadeCuts->SetBinLimits(17, 0.0, 250.0 ); // nTrackPrimaryMultiplicity
+ fCFContAsCascadeCuts->SetBinLimits(18, 0.0, 200.0 ); // SPDTrackletsMultiplicity
}
fCFContAsCascadeCuts->SetBinLimits(19, 25.0 ,165.0 ); // BachTPCClusters
-
-
+ */
// Setting the number of steps : one for each cascade species (Xi-, Xi+ and Omega-, Omega+)
fCFContAsCascadeCuts->SetStepTitle(0, "#Xi^{-} candidates associated to MC");
fCFContAsCascadeCuts->SetVarTitle(16, "Z-position(BestPrimVtx) (cm)");
- fCFContAsCascadeCuts->SetVarTitle(17, "TPCrefit track Multiplicity");
+ fCFContAsCascadeCuts->SetVarTitle(17, "Primary Track Multiplicity");
fCFContAsCascadeCuts->SetVarTitle(18, "SPD tracklets Multiplicity");
fCFContAsCascadeCuts->SetVarTitle(19, "Bach.TPC Clusters");
lESDevent = dynamic_cast<AliESDEvent*>( InputEvent() );
if (!lESDevent) {
Printf("ERROR: lESDevent not available \n");
- cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl; // or AliAnalysisTaskSE::CurrentFileName()
+ cout << "Name of the file with pb :" << CurrentFileName() << endl; // or AliAnalysisTaskSE::CurrentFileName()
return;
}
}
lAODevent = dynamic_cast<AliAODEvent*>( InputEvent() );
if (!lAODevent) {
Printf("ERROR: lAODevent not available \n");
- cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
+ cout << "Name of the file with pb :" << CurrentFileName() << endl;
return;
}
}
lMCevent = MCEvent();
if (!lMCevent) {
Printf("ERROR: Could not retrieve MC event \n");
- cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
+ cout << "Name of the file with pb :" << CurrentFileName() << endl;
return;
}
lMCstack = lMCevent->Stack();
if (!lMCstack) {
Printf("ERROR: Could not retrieve MC stack \n");
- cout << "Name of the file with pb :" << fInputHandler->GetTree()->GetCurrentFile()->GetName() << endl;
+ cout << "Name of the file with pb :" << CurrentFileName() << endl;
return;
}
// Note : Presuppose the presence of AliPhysicsSelectionTask
- Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+ UInt_t maskIsSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
+ Bool_t isSelected = 0;
+ if( fTriggerMaskType == "kMB") isSelected = (maskIsSelected & AliVEvent::kMB) == AliVEvent::kMB;
+ else if(fTriggerMaskType == "kHighMult") isSelected = (maskIsSelected & AliVEvent::kHighMult) == AliVEvent::kHighMult;
+ else isSelected = 1; // default = select anyway (use case = run without Phys Selection task)
+
if ( ! isSelected ) {
PostData(1, fListHistCascade);
- return;
+ return;
}
//else Printf("Event selected ... \n");
//-------------------------------------------------
// 1 - Cascade vertexer (ESD)
- if(fkRerunV0CascVertexers){
-// if(fAnalysisType == "ESD" ){
+ if(fkRerunV0CascVertexers){ // FIXME : relaunch V0 and Cascade vertexers
+ if(fAnalysisType == "ESD" ){
// lESDevent->ResetCascades();
// lESDevent->ResetV0s();
//
//
// lV0vtxer.Tracks2V0vertices(lESDevent);
// lCascVtxer.V0sTracks2CascadeVertices(lESDevent);
-// }
+ }
}
return;
}
}
+ // FIXME : quality selection regarding pile-up rejection
+ if(fkRejectEventPileUp) {
+ if(lESDevent->IsPileupFromSPD() ){// minContributors=3, minZdist=0.8, nSigmaZdist=3., nSigmaDiamXY=2., nSigmaDiamZ=5. -> see http://alisoft.cern.ch/viewvc/trunk/STEER/AliESDEvent.h?root=AliRoot&r1=41914&r2=42199&pathrev=42199
+ AliWarning("Pb / Event tagged as pile-up by SPD... return !");
+ PostData(1, fListHistCascade);
+ return;
+ }
+ }
// FIXME : remove TPC-only primary vertex : retain only events with tracking + SPD vertex
if(fkQualityCutNoTPConlyPrimVtx) {
if (!lPrimarySPDVtx->GetStatus() && !lPrimaryTrackingVtx->GetStatus() ){
else if(fAnalysisType == "AOD") ncascades = lAODevent->GetNumberOfCascades();
- Int_t iNumberOfPrimaries = -1;
- iNumberOfPrimaries = lMCstack->GetNprimary();
+ Int_t nNumberOfMCPrimaries = -1;
+ Int_t nMCPrimariesInAcceptance = 0;
+ Int_t nTrackPrimaryMultiplicity = -1;
+
- if(iNumberOfPrimaries < 1) return;
+ nNumberOfMCPrimaries = lMCstack->GetNprimary();
+ nTrackPrimaryMultiplicity = fESDtrackCuts->CountAcceptedTracks(lESDevent);
+
+ if(nNumberOfMCPrimaries < 1) return;
- fHistMCTrackMultiplicity->Fill( lMCstack->GetNtrack() );
-
+ fHistMCTrackMultiplicity->Fill( nNumberOfMCPrimaries );
+
+//_____________________________________________________________________________
+// Part 1 - Loop over the MC primaries
+
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < nNumberOfMCPrimaries; iCurrentLabelStack++)
+ {// This is the begining of the loop on primaries
+
+ TParticle* lCurrentParticle = 0x0;
+ lCurrentParticle = lMCstack->Particle( iCurrentLabelStack );
+ if(!lCurrentParticle){
+ Printf("MC Primary loop %d - MC TParticle pointer to current stack particle = 0x0 ! Skip ...\n", iCurrentLabelStack );
+ continue;
+ }
+
+ if( TMath::Abs( lCurrentParticle->Eta() ) > 0.8 ) continue;
+ nMCPrimariesInAcceptance++;
+ }
+
+ f2dHistRecoMultVsMCMult->Fill( nTrackPrimaryMultiplicity, nMCPrimariesInAcceptance );
+
+
// For proton
/*
- for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < iNumberOfPrimaries; iCurrentLabelStack++)
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < nNumberOfMCPrimaries; iCurrentLabelStack++)
{// This is the begining of the loop on primaries, for protons
TParticle* lCurrentParticle = lMCstack->Particle( iCurrentLabelStack );
-//__________________________________________________________________________
-// Part 1 - Loop over the different types of GENERATED cascades (Xi-+, Omega-+)
+//_____________________________________________________________________________
+// Part 2 - Loop over the different types of GENERATED cascades (Xi-+, Omega-+)
// - Initialisation of useful local variables
}// end switch cascade
- for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < iNumberOfPrimaries; iCurrentLabelStack++)
+ for (Int_t iCurrentLabelStack = 0; iCurrentLabelStack < nNumberOfMCPrimaries; iCurrentLabelStack++)
{// This is the begining of the loop on primaries
TParticle* lCurrentParticle = 0x0;
}
if( lCurrentParticle->GetPdgCode() == lPdgCodeCasc ){ // Here !
- //cout << "Xi- within loop " << iCurrentLabelStack << "/ " << iNumberOfPrimaries << endl;
+ //cout << "Xi- within loop " << iCurrentLabelStack << "/ " << nNumberOfMCPrimaries << endl;
// - Xi level ... _____________________________________________________________
TParticle* xiMC = 0x0;
if( lLambda->Theta() < TMath::Pi()/4.0 || lLambda->Theta() > 3.0*TMath::Pi()/4.0 ) continue;
if( lBach->Theta() < TMath::Pi()/4.0 || lBach->Theta() > 3.0*TMath::Pi()/4.0 ) continue;
- if( lBach->Pt() < 0.2 ) continue; //FIXME : maybe tuned for Xi but not for K- from Omega ...
+ if( lBach->Pt() < 0.150 ) continue; //FIXME : maybe tuned for Xi but not for K- from Omega ...
if( lDghtBarV0->Theta() < TMath::Pi()/4.0 || lDghtBarV0->Theta() > 3.0*TMath::Pi()/4.0 ) continue;
if( lDghtMesV0->Theta() < TMath::Pi()/4.0 || lDghtMesV0->Theta() > 3.0*TMath::Pi()/4.0 ) continue;
- if( lDghtBarV0->Pt() < 0.3 ) continue;
- if( lDghtMesV0->Pt() < 0.2 ) continue;
+ if( lDghtBarV0->Pt() < 0.250 ) continue;
+ if( lDghtMesV0->Pt() < 0.150 ) continue;
//__________________________________________________________________________
-// Part 2 - Loop over the reconstructed candidates
+// Part 3 - Loop over the reconstructed candidates
for (Int_t iXi = 0; iXi < ncascades; iXi++)
}// end if bachelor track with existing combined PID
- // 3.1.B - TPC PID : 3-sigma bands on Bethe-Bloch curve
- // Bachelor
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kKaon)) < 3) lIsBachelorKaonForTPC = kTRUE;
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kPion)) < 3) lIsBachelorPionForTPC = kTRUE;
-
- // Negative V0 daughter
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kPion )) < 3) lIsNegPionForTPC = kTRUE;
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kProton )) < 3) lIsNegProtonForTPC = kTRUE;
-
- // Positive V0 daughter
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kPion )) < 3) lIsPosPionForTPC = kTRUE;
- if (TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kProton )) < 3) lIsPosProtonForTPC = kTRUE;
-
+ // 3.1.B - TPC PID : 4-sigma bands on Bethe-Bloch curve
+
+ // Bachelor
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kKaon)) < 4) lIsBachelorKaonForTPC = kTRUE;
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kPion)) < 4) lIsBachelorPionForTPC = kTRUE;
+
+ // Negative V0 daughter
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kPion )) < 4) lIsNegPionForTPC = kTRUE;
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kProton )) < 4) lIsNegProtonForTPC = kTRUE;
+
+ // Positive V0 daughter
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kPion )) < 4) lIsPosPionForTPC = kTRUE;
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kProton )) < 4) lIsPosProtonForTPC = kTRUE;
+
+ /*
+ const AliExternalTrackParam *pInnerWallTrackXi = pTrackXi ->GetInnerParam(); // Do not use GetTPCInnerWall
+ const AliExternalTrackParam *nInnerWallTrackXi = nTrackXi ->GetInnerParam();
+ const AliExternalTrackParam *bachInnerWallTrackXi = bachTrackXi ->GetInnerParam();
+ if(pInnerWallTrackXi && nInnerWallTrackXi && bachInnerWallTrackXi ){
+
+ Double_t pMomInnerWall = pInnerWallTrackXi ->GetP();
+ Double_t nMomInnerWall = nInnerWallTrackXi ->GetP();
+ Double_t bachMomInnerWall = bachInnerWallTrackXi->GetP();
+
+ // Bachelor
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kPion)) < 3) lIsBachelorPionForTPC = kTRUE;
+ if (bachMomInnerWall < 0.350 && TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kKaon)) < 5) lIsBachelorKaonForTPC = kTRUE;
+ if (bachMomInnerWall > 0.350 && TMath::Abs(fESDpid->NumberOfSigmasTPC( bachTrackXi,AliPID::kKaon)) < 3) lIsBachelorKaonForTPC = kTRUE;
+
+ // Negative V0 daughter
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kPion )) < 3 ) lIsNegPionForTPC = kTRUE;
+ if (nMomInnerWall < 0.6 && TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kProton ) ) < 5 ) lIsNegProtonForTPC = kTRUE;
+ if (nMomInnerWall > 0.6 && TMath::Abs(fESDpid->NumberOfSigmasTPC( nTrackXi,AliPID::kProton ) ) < 3 ) lIsNegProtonForTPC = kTRUE;
+
+ // Positive V0 daughter
+ if (TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kPion )) < 3 ) lIsPosPionForTPC = kTRUE;
+ if (pMomInnerWall < 0.6 && TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kProton )) < 5) lIsPosProtonForTPC = kTRUE;
+ if (pMomInnerWall > 0.6 && TMath::Abs(fESDpid->NumberOfSigmasTPC( pTrackXi,AliPID::kProton )) < 3) lIsPosProtonForTPC = kTRUE;
+
+ }
+ */
// Combined PID TH1s
if( lChargeXi < 0 && lIsBachelorPion ) fHistMassWithCombPIDXiMinus ->Fill( lInvMassXiMinus );
(mcMotherBach->Energy() - mcMotherBach->Pz() +1.e-13) );
Double_t lmcEta = mcMotherBach->Eta();
Double_t lmcTransvRadius = mcBach->R(); // to get the decay point of Xi, = the production vertex of Bachelor ...
+
+ TVector3 lmcTVect3Mom( mcMotherBach->Px(), mcMotherBach->Py(), mcMotherBach->Pz() );
Double_t lrecoPt = xiESD->Pt();
Double_t lrecoTransvRadius = TMath::Sqrt( xiESD->Xv() * xiESD->Xv() + xiESD->Yv() * xiESD->Yv() );
+
+ TVector3 lrecoTVect3Mom( xiESD->Px(), xiESD->Py(), xiESD->Pz() );
+ Double_t lDeltaPhiMcReco = lmcTVect3Mom.DeltaPhi( lrecoTVect3Mom ) * 180.0/TMath::Pi();
-
+
// - Histos for the cascade candidates associated with MC
if( lChargeXi < 0 && lAssoXiMinus){
fHistAsMCGenEtaXiMinus ->Fill( lmcEta );
f2dHistAsMCResPtXiMinus ->Fill( lmcPt, (lrecoPt - lmcPt)/ lmcPt );
f2dHistAsMCResRXiMinus ->Fill( lmcTransvRadius, (lrecoTransvRadius - lmcTransvRadius)/ lmcTransvRadius );
+ f2dHistAsMCResPhiXiMinus ->Fill( lmcPt, lDeltaPhiMcReco );
}
else if( lChargeXi > 0 && lAssoXiPlus){
fHistAsMCGenEtaXiPlus ->Fill( lmcEta );
f2dHistAsMCResPtXiPlus ->Fill( lmcPt, (lrecoPt - lmcPt)/ lmcPt );
f2dHistAsMCResRXiPlus ->Fill( lmcTransvRadius, (lrecoTransvRadius - lmcTransvRadius)/ lmcTransvRadius );
+ f2dHistAsMCResPhiXiPlus ->Fill( lmcPt, lDeltaPhiMcReco );
}
else if( lChargeXi < 0 && lAssoOmegaMinus){
fHistAsMCGenEtaOmegaMinus ->Fill( lmcEta );
f2dHistAsMCResPtOmegaMinus ->Fill( lmcPt, (lrecoPt - lmcPt)/ lmcPt );
f2dHistAsMCResROmegaMinus ->Fill( lmcTransvRadius, (lrecoTransvRadius - lmcTransvRadius)/ lmcTransvRadius );
+ f2dHistAsMCResPhiOmegaMinus ->Fill( lmcPt, lDeltaPhiMcReco );
}
else if( lChargeXi > 0 && lAssoOmegaPlus){
fHistAsMCGenEtaOmegaPlus ->Fill( lmcEta );
f2dHistAsMCResPtOmegaPlus ->Fill( lmcPt, (lrecoPt - lmcPt)/ lmcPt );
f2dHistAsMCResROmegaPlus ->Fill( lmcTransvRadius, (lrecoTransvRadius - lmcTransvRadius)/ lmcTransvRadius );
- }
+ f2dHistAsMCResPhiOmegaPlus ->Fill( lmcPt, lDeltaPhiMcReco );
+ }
// - Step 6 : Containers = Cascade cuts + PID
- nTrackWithTPCrefitMultiplicity = DoESDTrackWithTPCrefitMultiplicity(lESDevent);
+ nTrackWithTPCrefitMultiplicity = DoESDTrackWithTPCrefitMultiplicity(lESDevent); // FIXME : variable which is not used anymore at the moment ...
+ // -> keep it while the task is still under development.
const AliMultiplicity *lAliMult = lESDevent->GetMultiplicity();
lContainerCutVars[13] = lmcPt;
lContainerCutVars[16] = lBestPrimaryVtxPos[2];
- lContainerCutVars[17] = nTrackWithTPCrefitMultiplicity; // FIXME : nTrackWithTPCrefitMultiplicity not checked for AOD ...
+ lContainerCutVars[17] = nTrackPrimaryMultiplicity; // FIXME : nTrackPrimaryMultiplicity not checked for AOD ...
lContainerCutVars[18] = lSPDTrackletsMultiplicity; // FIXME : SPDTrackletsMultiplicity is not available for AOD ...
lContainerCutVars[19] = lBachTPCClusters; // FIXME : BachTPCClusters is not available for AOD ...
// All cases should be covered below
if( lChargeXi < 0 && lAssoXiMinus ) {
lContainerCutVars[11] = lInvMassXiMinus;
- lContainerCutVars[12] = 1.75;
+ lContainerCutVars[12] = 1.63;
lContainerCutVars[14] = lmcRapCasc;
lContainerCutVars[15] = -1.;
- fCFContAsCascadeCuts->Fill(lContainerCutVars,0); // for Xi-
+ if( lIsBachelorPionForTPC && lIsPosProtonForTPC && lIsNegPionForTPC )
+ fCFContAsCascadeCuts->Fill(lContainerCutVars,0); // for Xi-
}
if( lChargeXi > 0 && lAssoXiPlus ){
lContainerCutVars[11] = lInvMassXiPlus;
- lContainerCutVars[12] = 1.75;
+ lContainerCutVars[12] = 1.26;
lContainerCutVars[14] = lmcRapCasc;
lContainerCutVars[15] = -1.;
- fCFContAsCascadeCuts->Fill(lContainerCutVars,1); // for Xi+
+ if( lIsBachelorPionForTPC && lIsNegProtonForTPC && lIsPosPionForTPC )
+ fCFContAsCascadeCuts->Fill(lContainerCutVars,1); // for Xi+
}
if( lChargeXi < 0 && lAssoOmegaMinus ) {
- lContainerCutVars[11] = 1.4;
+ lContainerCutVars[11] = 1.63;
lContainerCutVars[12] = lInvMassOmegaMinus;
lContainerCutVars[14] = -1.;
lContainerCutVars[15] = lmcRapCasc;
- fCFContAsCascadeCuts->Fill(lContainerCutVars,2); // for Omega-
+ if( lIsBachelorKaonForTPC && lIsPosProtonForTPC && lIsNegPionForTPC )
+ fCFContAsCascadeCuts->Fill(lContainerCutVars,2); // for Omega-
}
if( lChargeXi > 0 && lAssoOmegaPlus ){
- lContainerCutVars[11] = 1.4;
+ lContainerCutVars[11] = 1.26;
lContainerCutVars[12] = lInvMassOmegaPlus;
lContainerCutVars[14] = -1.;
lContainerCutVars[15] = lmcRapCasc;
- fCFContAsCascadeCuts->Fill(lContainerCutVars,3); // for Omega+
+ if( lIsBachelorKaonForTPC && lIsNegProtonForTPC && lIsPosPionForTPC )
+ fCFContAsCascadeCuts->Fill(lContainerCutVars,3); // for Omega+
}
lContainerPIDVars[0] = lmcPt ;
lContainerPIDVars[1] = lInvMassXiMinus ;
lContainerPIDVars[2] = lmcRapCasc ;
- lContainerPIDVars[3] = nTrackWithTPCrefitMultiplicity ;
+ lContainerPIDVars[3] = nTrackPrimaryMultiplicity ; // FIXME : nTrackPrimaryMultiplicity is not checked for AOD ...
// No PID
fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 0); // No PID
// TPC PID
if( lIsBachelorPionForTPC )
- fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 1); // TPC PID / 3-#sigma cut on Bachelor track
+ fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 1); // TPC PID / 4-#sigma cut on Bachelor track
if( lIsBachelorPionForTPC &&
lIsPosProtonForTPC )
- fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 2); // TPC PID / 3-#sigma cut on Bachelor+Baryon tracks
+ fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 2); // TPC PID / 4-#sigma cut on Bachelor+Baryon tracks
if( lIsBachelorPionForTPC &&
lIsPosProtonForTPC &&
lIsNegPionForTPC )
- fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 3); // TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks
+ fCFContCascadePIDAsXiMinus->Fill(lContainerPIDVars, 3); // TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks
// Combined PID
if( lIsBachelorPion )
lContainerPIDVars[0] = lmcPt ;
lContainerPIDVars[1] = lInvMassXiPlus ;
lContainerPIDVars[2] = lmcRapCasc ;
- lContainerPIDVars[3] = nTrackWithTPCrefitMultiplicity ;
+ lContainerPIDVars[3] = nTrackPrimaryMultiplicity ; // FIXME : nTrackPrimaryMultiplicity is not checked for AOD ...
// No PID
fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 0); // No PID
// TPC PID
if( lIsBachelorPionForTPC )
- fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 1); // TPC PID / 3-#sigma cut on Bachelor track
+ fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 1); // TPC PID / 4-#sigma cut on Bachelor track
if( lIsBachelorPionForTPC &&
lIsNegProtonForTPC )
- fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 2); // TPC PID / 3-#sigma cut on Bachelor+Baryon tracks
+ fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 2); // TPC PID / 4-#sigma cut on Bachelor+Baryon tracks
if( lIsBachelorPionForTPC &&
lIsNegProtonForTPC &&
lIsPosPionForTPC )
- fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 3); // TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks
+ fCFContCascadePIDAsXiPlus->Fill(lContainerPIDVars, 3); // TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks
// Combined PID
if( lIsBachelorPion )
lContainerPIDVars[0] = lmcPt ;
lContainerPIDVars[1] = lInvMassOmegaMinus ;
lContainerPIDVars[2] = lmcRapCasc ;
- lContainerPIDVars[3] = nTrackWithTPCrefitMultiplicity ;
+ lContainerPIDVars[3] = nTrackPrimaryMultiplicity ; // FIXME : nTrackPrimaryMultiplicity is not checked for AOD ...
// No PID
fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 0); // No PID
// TPC PID
if( lIsBachelorKaonForTPC )
- fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 1); // TPC PID / 3-#sigma cut on Bachelor track
+ fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 1); // TPC PID / 4-#sigma cut on Bachelor track
if( lIsBachelorKaonForTPC &&
lIsPosProtonForTPC )
- fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 2); // TPC PID / 3-#sigma cut on Bachelor+Baryon tracks
+ fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 2); // TPC PID / 4-#sigma cut on Bachelor+Baryon tracks
if( lIsBachelorKaonForTPC &&
lIsPosProtonForTPC &&
lIsNegPionForTPC )
- fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 3); // TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks
+ fCFContCascadePIDAsOmegaMinus->Fill(lContainerPIDVars, 3); // TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks
// Combined PID
if( lIsBachelorKaon )
lContainerPIDVars[0] = lmcPt ;
lContainerPIDVars[1] = lInvMassOmegaPlus ;
lContainerPIDVars[2] = lmcRapCasc ;
- lContainerPIDVars[3] = nTrackWithTPCrefitMultiplicity ;
+ lContainerPIDVars[3] = nTrackPrimaryMultiplicity ; // FIXME : nTrackPrimaryMultiplicity is not checked for AOD ...
// No PID
fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 0); // No PID
// TPC PID
if( lIsBachelorKaonForTPC )
- fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 1); // TPC PID / 3-#sigma cut on Bachelor track
+ fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 1); // TPC PID / 4-#sigma cut on Bachelor track
if( lIsBachelorKaonForTPC &&
lIsNegProtonForTPC )
- fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 2); // TPC PID / 3-#sigma cut on Bachelor+Baryon tracks
+ fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 2); // TPC PID / 4-#sigma cut on Bachelor+Baryon tracks
if( lIsBachelorKaonForTPC &&
lIsNegProtonForTPC &&
lIsPosPionForTPC )
- fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 3); // TPC PID / 3-#sigma cut on Bachelor+Baryon+Meson tracks
+ fCFContCascadePIDAsOmegaPlus->Fill(lContainerPIDVars, 3); // TPC PID / 4-#sigma cut on Bachelor+Baryon+Meson tracks
// Combined PID
if( lIsBachelorKaon )