]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / AddMonitorOutput.C
index 8200b57b71bc357589b3f85488ea82a9230d052e..77603684790d3d3cfff3c8a8d2c0aa9fecfab7b6 100644 (file)
@@ -1,47 +1,75 @@
 /***************************************************************************
-              fbellini@cern.ch - last modified on 06/08/2012
+              fbellini@cern.ch - last modified on 09/04/2013
 
  Macro to add monitoring histograms for track and PID cuts to the rsn task 
  Tuned for monitoring TOF KStar analysis of PbPb 2010 data
-/***************************************************************************/
 
+Options ("opt" argument):
+- dim1 --> use TH1 only (no p or pt dependence)
+- dim3 --> use TH3 (p dependence) for TOF vs TPC pid histos
+- NoTOFSIGMA  --> disable the nsigma_TOF vs p histos
+- NoTPCSIGMA  --> disable the nsigma_TPC vs p_TPC histos
+- NoSIGN --> disable splitting for single track charge
+- NoTrackQ  --> disable track quality monitoring (DCA, nCls) histos
+/***************************************************************************/
 
 void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 {
+  //Set options
+  Bool_t useTH1 = opt.Contains("dim1");
+  Bool_t useTH3 = opt.Contains("dim3");
+  Bool_t monitorSign = !opt.Contains("NoSIGN");
+  Bool_t monitorTrackQ = !opt.Contains("NoTrackQ");
+  Bool_t monitorTPCpid = !opt.Contains("NoTPCSIGMA");
+  Bool_t monitorTOFpid = !opt.Contains("NoTPCSIGMA");
   
   // Multiplicity/centrality
   AliRsnValueEvent *multi = new AliRsnValueEvent("multi",AliRsnValueEvent::kMult);
   multi->SetBins(0.0, 400.0, 1);
   // Momentum
   AliRsnValueDaughter *axisMomTPC = new AliRsnValueDaughter("pTPC", AliRsnValueDaughter::kPtpc);
-  axisMomTPC->SetBins(0.0, 10.0, 0.01);
+  axisMomTPC->SetBins(0.0, 10.0, 0.02);
   AliRsnValueDaughter *axisMomP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kP);
-  axisMomP->SetBins(0.0, 10.0, 0.01);
+  axisMomP->SetBins(0.0, 10.0, 0.02);
   // Momentum Pt
   AliRsnValueDaughter *axisMomPt = new AliRsnValueDaughter("pt", AliRsnValueDaughter::kPt);
-  axisMomPt->SetBins(0.0,10.0,0.01);
+  axisMomPt->SetBins(0.0,10.0,0.02);
   // Eta
   AliRsnValueDaughter *axisMomEta = new AliRsnValueDaughter("eta", AliRsnValueDaughter::kEta);
   axisMomEta->SetBins(-1.0, 1.0, 0.1);
   //ITS clusters
   AliRsnValueDaughter *axisITScls = new AliRsnValueDaughter("ITScls", AliRsnValueDaughter::kNITSclusters);
-  axisITScls->SetBins(0.0, 10.0, 1.0);
+  axisITScls->SetBins(0.0, 12.0, 1.0);
   //TPC clusters
   AliRsnValueDaughter *axisTPCcls = new AliRsnValueDaughter("TPCcls", AliRsnValueDaughter::kNTPCclusters);
-  axisTPCcls->SetBins(0.0, 300.0, 1.0);
+  axisTPCcls->SetBins(0.0, 160.0, 1.0);
+  //TPC crossed rows
+  AliRsnValueDaughter *axisTPCcrossedRows = new AliRsnValueDaughter("TPCcrossedRows", AliRsnValueDaughter::kNTPCcrossedRows);
+  axisTPCcrossedRows->SetBins(0.0, 160.0, 1.0);
+  //TPC crossed rows / findable clusters
+  AliRsnValueDaughter *axisTPCcrossedRows2Fcls = new AliRsnValueDaughter("TPCcrossedRows2Fcls", AliRsnValueDaughter::kNTPCcrossedRowsFclusters);
+  axisTPCcrossedRows2Fcls->SetBins(0.0, 1.0, 0.1);
   //ITS chi2
   AliRsnValueDaughter *axisITSchi2 = new AliRsnValueDaughter("ITSchi2", AliRsnValueDaughter::kITSchi2);
-  axisITSchi2->SetBins(0.0, 10.0, 0.1);
+  axisITSchi2->SetBins(0.0, 12.0, 0.1);
   //TPC chi2
   AliRsnValueDaughter *axisTPCchi2 = new AliRsnValueDaughter("TPCchi2", AliRsnValueDaughter::kTPCchi2);
   axisTPCchi2->SetBins(0.0, 10.0, 0.1);
   //DCA xy
   AliRsnValueDaughter *axisDCAxy = new AliRsnValueDaughter("DCAxy", AliRsnValueDaughter::kDCAXY);
-  axisDCAxy->SetBins(-2.0, 2.0, 0.1);
+  axisDCAxy->SetBins(-2.5, 2.5, 0.001);
   //DCA z
   AliRsnValueDaughter *axisDCAz = new AliRsnValueDaughter("DCAz", AliRsnValueDaughter::kDCAZ);
-  axisDCAz->SetBins(-10.0, 10.0, 0.1);
-
+  axisDCAz->SetBins(-5.0, 5.0, 0.01);
+  //Charge
+  AliRsnValueDaughter *axisCharge = new AliRsnValueDaughter("charge",AliRsnValueDaughter::kCharge);
+  axisCharge->SetBins(-1.5, 1.5, 1.0);
+  //Phi
+  AliRsnValueDaughter *axisPhi = new AliRsnValueDaughter("phi", AliRsnValueDaughter::kPhi);
+  axisPhi->SetBins(0.0, 360.0, 1.0);
+  AliRsnValueDaughter *axisPhiOuterTPC = new AliRsnValueDaughter("phiOuterTPC", AliRsnValueDaughter::kPhiOuterTPC);
+  axisPhiOuterTPC->SetBins(0.0, 360.0, 1.0);
+  
   /* dEdx tpc */
   AliRsnValueDaughter *axisSigTPC = new AliRsnValueDaughter("sTPC", AliRsnValueDaughter::kTPCsignal);
   axisSigTPC->SetBins(0.0, 500.0, 2.0);
@@ -58,6 +86,17 @@ void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRs
   /* tof signal - time */
   AliRsnValueDaughter *axisSigTOF = new AliRsnValueDaughter("sTOF", AliRsnValueDaughter::kTOFsignal);
   axisSigTOF->SetBins(10000.0, 50000.0, 250);//in ps
+  
+  // kTOFdeltaPi
+  AliRsnValueDaughter *axisTOFdeltaPi = new AliRsnValueDaughter("Dpi", AliRsnValueDaughter::kTOFdeltaPi);
+  axisTOFdeltaPi->SetBins(-3000.,3000., 10.);
+  // kTOFdeltaK
+  AliRsnValueDaughter *axisTOFdeltaK = new AliRsnValueDaughter("DK", AliRsnValueDaughter::kTOFdeltaK);
+  axisTOFdeltaK->SetBins(-3000.,3000., 10.);
+  // kTOFdeltaP
+  AliRsnValueDaughter *axisTOFdeltaP = new AliRsnValueDaughter("Dp", AliRsnValueDaughter::kTOFdeltaP);
+  axisTOFdeltaP->SetBins(-3000.,3000., 10.);
+
   // kTOFnsigmaPi
   AliRsnValueDaughter *axisTOFnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTOFnsigmaPi);
   axisTOFnsigmaPi->SetBins(-10.,10., 0.1);
@@ -84,129 +123,193 @@ void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRs
   // output: TH1D for momentum
   AliRsnListOutput *outMonitorP = new AliRsnListOutput("P", AliRsnListOutput::kHistoDefault);
   outMonitorP->AddValue(axisMomP);
+  if (monitorSign) outMonitorP->AddValue(axisCharge);
   if (mon) mon->Add(outMonitorP);
   if (lm) lm->AddOutput(outMonitorP);
-
+  
   // output:  TH1D for pt
   AliRsnListOutput *outMonitorPt = new AliRsnListOutput("Pt", AliRsnListOutput::kHistoDefault);
   outMonitorPt->AddValue(axisMomPt);
+  if (monitorSign) outMonitorPt->AddValue(axisCharge);
   if (mon) mon->Add(outMonitorPt);
   if (lm) lm->AddOutput(outMonitorPt);
-
+  
   // output: TH1D for pseudorapidity
   AliRsnListOutput *outMonitorEta = new AliRsnListOutput("Eta", AliRsnListOutput::kHistoDefault);
   outMonitorEta->AddValue(axisMomEta);
+  if (monitorSign) outMonitorEta->AddValue(axisCharge);
   if (mon) mon->Add(outMonitorEta);
   if (lm) lm->AddOutput(outMonitorEta);
+  
+  // output:  TH1D for phi at vertex
+  AliRsnListOutput *outMonitorPhi = new AliRsnListOutput("Phi", AliRsnListOutput::kHistoDefault);
+  outMonitorPhi->AddValue(axisPhi);
+  if (monitorSign) outMonitorPhi->AddValue(axisCharge);
+  if (mon) mon->Add(outMonitorPhi);
+  if (lm) lm->AddOutput(outMonitorPhi);
+  
+  // output:  TH1D for phiOuterTPC at TPC outer radius
+  AliRsnListOutput *outMonitorPhiOuterTPC = new AliRsnListOutput("PhiOuterTPC", AliRsnListOutput::kHistoDefault);
+  outMonitorPhiOuterTPC->AddValue(axisPhiOuterTPC);
+  if (monitorSign) outMonitorPhiOuterTPC->AddValue(axisCharge);
+  if (mon) mon->Add(outMonitorPhiOuterTPC);
+  if (lm) lm->AddOutput(outMonitorPhiOuterTPC);
+  
+  // output:  TH2D for phi vs pt
+  AliRsnListOutput *outMonitorPhiVsPt = new AliRsnListOutput("PhiVsPt", AliRsnListOutput::kHistoDefault);
+  outMonitorPhiVsPt->AddValue(axisMomPt);
+  outMonitorPhiVsPt->AddValue(axisPhi);
+  if (monitorSign) outMonitorPhiVsPt->AddValue(axisCharge);
+  if (mon) mon->Add(outMonitorPhiVsPt);
+  if (lm) lm->AddOutput(outMonitorPhiVsPt);
 
   /****************************************************************/
   /***************      MONITOR TRACK QUALITY  ********************/
   /****************************************************************/
-  // output: 2D histogram of DCAxy vs pt
-  AliRsnListOutput *outMonitorDCAxy = new AliRsnListOutput("DCAxyVsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorDCAxy->AddValue(axisMomPt);
-  outMonitorDCAxy->AddValue(axisDCAxy);
-  if (mon) mon->Add(outMonitorDCAxy);
-  if (lm) lm->AddOutput(outMonitorDCAxy);
+  if (monitorTrackQ) {
+    // output: 2D histogram of DCAxy vs pt
+    AliRsnListOutput *outMonitorDCAxy = new AliRsnListOutput("DCAxyVsPt", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorDCAxy->AddValue(axisMomPt);
+    outMonitorDCAxy->AddValue(axisDCAxy);
+    if (mon) mon->Add(outMonitorDCAxy);
+    if (lm) lm->AddOutput(outMonitorDCAxy);
 
-  // output: 2D histogram of DCAz vs P
-  AliRsnListOutput *outMonitorDCAz = new AliRsnListOutput("DCAzVsP", AliRsnListOutput::kHistoDefault);
-  outMonitorDCAz->AddValue(axisMomP);
-  outMonitorDCAz->AddValue(axisDCAz);
-  if (mon) mon->Add(outMonitorDCAz);
-  if (lm) lm->AddOutput(outMonitorDCAz);
+    // output: 2D histogram of DCAz vs P
+    AliRsnListOutput *outMonitorDCAz = new AliRsnListOutput("DCAzVsP", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorDCAz->AddValue(axisMomP);
+    outMonitorDCAz->AddValue(axisDCAz);
+    if (mon) mon->Add(outMonitorDCAz);
+    if (lm) lm->AddOutput(outMonitorDCAz);
 
-  // output: 2D histogram of ITS cls vs pt
-  AliRsnListOutput *outMonitorITScls = new AliRsnListOutput("ITSclsVsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorITScls->AddValue(axisMomPt);
-  outMonitorITScls->AddValue(axisITScls);
-  if (mon) mon->Add(outMonitorITScls);
-  if (lm) lm->AddOutput(outMonitorITScls);
+    // output: 2D histogram of ITS cls vs pt
+    AliRsnListOutput *outMonitorITScls = new AliRsnListOutput("ITSclsVsPt", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorITScls->AddValue(axisMomPt);
+    outMonitorITScls->AddValue(axisITScls);
+    if (mon) mon->Add(outMonitorITScls);
+    if (lm) lm->AddOutput(outMonitorITScls);
 
-  // output: 2D histogram of TPC cls vs. pt
-  AliRsnListOutput *outMonitorTPCcls = new AliRsnListOutput("TPCclsVsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCcls->AddValue(axisMomPt);
-  outMonitorTPCcls->AddValue(axisTPCcls);
-  if (mon) mon->Add(outMonitorTPCcls);
-  if (lm) lm->AddOutput(outMonitorTPCcls);
+    // output: 2D histogram of TPC cls vs. pt
+    AliRsnListOutput *outMonitorTPCcls = new AliRsnListOutput("TPCclsVsPt", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorTPCcls->AddValue(axisMomPt);
+    outMonitorTPCcls->AddValue(axisTPCcls);
+    if (mon) mon->Add(outMonitorTPCcls);
+    if (lm) lm->AddOutput(outMonitorTPCcls);
 
-// output: 2D histogram of TPC cls vs. TPC momentum
-  AliRsnListOutput *outMonitorTPCclsVsPtpc = new AliRsnListOutput("TPCclsVsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCclsVsPtpc->AddValue(axisMomTPC);
-  outMonitorTPCclsVsPtpc->AddValue(axisTPCcls);
-  if (mon) mon->Add(outMonitorTPCclsVsPtpc);
-  if (lm) lm->AddOutput(outMonitorTPCclsVsPtpc);
+    // output: 2D histogram of TPC cls vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCclsVsPtpc = new AliRsnListOutput("TPCclsVsPtpc", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorTPCclsVsPtpc->AddValue(axisMomTPC);
+    outMonitorTPCclsVsPtpc->AddValue(axisTPCcls);
+    if (mon) mon->Add(outMonitorTPCclsVsPtpc);
+    if (lm) lm->AddOutput(outMonitorTPCclsVsPtpc);
 
- // output: 2D histogram of ITS chi2 vs pt
-  AliRsnListOutput *outMonitorITSchi2 = new AliRsnListOutput("ITSchi2VsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorITSchi2->AddValue(axisMomPt);
-  outMonitorITSchi2->AddValue(axisITSchi2);
-  if (mon) mon->Add(outMonitorITSchi2);
-  if (lm) lm->AddOutput(outMonitorITSchi2);
+    // output: 2D histogram of TPC crossed rows vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCcrossedRowsVsPtpc = new AliRsnListOutput("TPCcrossedRowsVsPtpc", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorTPCcrossedRowsVsPtpc->AddValue(axisMomTPC);
+    outMonitorTPCcrossedRowsVsPtpc->AddValue(axisTPCcrossedRows);
+    if (mon) mon->Add(outMonitorTPCcrossedRowsVsPtpc);
+    if (lm) lm->AddOutput(outMonitorTPCcrossedRowsVsPtpc);
 
-  // output: 2D histogram of TPC chi2 vs. pt
-  AliRsnListOutput *outMonitorTPCchi2 = new AliRsnListOutput("TPCchi2VsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCchi2->AddValue(axisMomPt);
-  outMonitorTPCchi2->AddValue(axisTPCchi2);
-  if (mon) mon->Add(outMonitorTPCchi2);
-  if (lm) lm->AddOutput(outMonitorTPCchi2);
+    // output: 2D histogram of TPC crossed rows/Findable cls vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCcrossedRows2FclsVsPtpc = new AliRsnListOutput("TPCcrossedRows2FclsVsPtpc", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorTPCcrossedRows2FclsVsPtpc->AddValue(axisMomTPC);
+    outMonitorTPCcrossedRows2FclsVsPtpc->AddValue(axisTPCcrossedRows2Fcls);
+    if (mon) mon->Add(outMonitorTPCcrossedRows2FclsVsPtpc);
+    if (lm) lm->AddOutput(outMonitorTPCcrossedRows2FclsVsPtpc);
 
-// output: 2D histogram of TPC chi2 vs. TPC momentum
-  AliRsnListOutput *outMonitorTPCchi2VsPtpc = new AliRsnListOutput("TPCchi2VsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCchi2VsPtpc->AddValue(axisMomTPC);
-  outMonitorTPCchi2VsPtpc->AddValue(axisTPCchi2);
-  if (mon) mon->Add(outMonitorTPCchi2VsPtpc);
-  if (lm) lm->AddOutput(outMonitorTPCchi2VsPtpc);
+    // output: 2D histogram of ITS chi2 vs pt
+    AliRsnListOutput *outMonitorITSchi2 = new AliRsnListOutput("ITSchi2VsPt", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorITSchi2->AddValue(axisMomPt);
+    outMonitorITSchi2->AddValue(axisITSchi2);
+    if (mon) mon->Add(outMonitorITSchi2);
+    if (lm) lm->AddOutput(outMonitorITSchi2);
 
+    // output: 2D histogram of TPC chi2 vs. pt
+    AliRsnListOutput *outMonitorTPCchi2 = new AliRsnListOutput("TPCchi2VsPt", AliRsnListOutput::kHistoDefault);
+    if (!useTH1) outMonitorTPCchi2->AddValue(axisMomPt);
+    outMonitorTPCchi2->AddValue(axisTPCchi2);
+    if (mon) mon->Add(outMonitorTPCchi2);
+    if (lm) lm->AddOutput(outMonitorTPCchi2);
+
+    // output: 2D histogram of TPC chi2 vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCchi2VsPtpc = new AliRsnListOutput("TPCchi2VsPtpc", AliRsnListOutput::kHistoDefault);
+   if (!useTH1) outMonitorTPCchi2VsPtpc->AddValue(axisMomTPC);
+    outMonitorTPCchi2VsPtpc->AddValue(axisTPCchi2);
+    if (mon) mon->Add(outMonitorTPCchi2VsPtpc);
+    if (lm) lm->AddOutput(outMonitorTPCchi2VsPtpc);
+  }
   /****************************************************************/
   /***************       MONITOR TPC           ********************/
   /****************************************************************/
-  // output: 2D histogram of TPC signal vs. TPC momentum
-  AliRsnListOutput *outMonitordEdxTPC = new AliRsnListOutput("dEdx_VsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitordEdxTPC->AddValue(axisMomTPC);
-  outMonitordEdxTPC->AddValue(axisSigTPC);
-  if (mon) mon->Add(outMonitordEdxTPC);
-  if (lm) lm->AddOutput(outMonitordEdxTPC);
-
-  // output: 2D histogram of TPC nsigma pi vs. TPC momentum
-  AliRsnListOutput *outMonitorTPCnsigmaPi = new AliRsnListOutput("TPC_nsigmaPi_VsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCnsigmaPi->AddValue(axisMomTPC);
-  outMonitorTPCnsigmaPi->AddValue(axisTPCnsigmaPi);
-  if (mon) mon->Add(outMonitorTPCnsigmaPi);
-  if (lm) lm->AddOutput(outMonitorTPCnsigmaPi);
+  if (monitorTPCpid) {
+    // output: 2D histogram of TPC signal vs. TPC momentum
+    AliRsnListOutput *outMonitordEdxTPC = new AliRsnListOutput("dEdx_VsPtpc", AliRsnListOutput::kHistoDefault);
+    outMonitordEdxTPC->AddValue(axisMomTPC);
+    outMonitordEdxTPC->AddValue(axisSigTPC);
+    if (mon) mon->Add(outMonitordEdxTPC);
+    if (lm) lm->AddOutput(outMonitordEdxTPC);
 
-  // output: 2D histogram of TPC nsigma K vs. TPC momentum
-  AliRsnListOutput *outMonitorTPCnsigmaK = new AliRsnListOutput("TPC_nsigmaK_VsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCnsigmaK->AddValue(axisMomTPC);
-  outMonitorTPCnsigmaK->AddValue(axisTPCnsigmaK);
-  if (mon) mon->Add(outMonitorTPCnsigmaK);
-  if (lm) lm->AddOutput(outMonitorTPCnsigmaK);
+    // output: 2D histogram of TPC nsigma pi vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCnsigmaPi = new AliRsnListOutput("TPC_nsigmaPi_VsPtpc", AliRsnListOutput::kHistoDefault);
+    outMonitorTPCnsigmaPi->AddValue(axisMomTPC);
+    outMonitorTPCnsigmaPi->AddValue(axisTPCnsigmaPi);
+    if (mon) mon->Add(outMonitorTPCnsigmaPi);
+    if (lm) lm->AddOutput(outMonitorTPCnsigmaPi);
 
-  // output: 2D histogram of TPC nsigma pro vs. TPC momentum
-  AliRsnListOutput *outMonitorTPCnsigmaP = new AliRsnListOutput("TPC_nsigmaPro_VsPtpc", AliRsnListOutput::kHistoDefault);
-  outMonitorTPCnsigmaP->AddValue(axisMomTPC);
-  outMonitorTPCnsigmaP->AddValue(axisTPCnsigmaP);
-  if (mon) mon->Add(outMonitorTPCnsigmaP);
-  if (lm) lm->AddOutput(outMonitorTPCnsigmaP);
+    // output: 2D histogram of TPC nsigma K vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCnsigmaK = new AliRsnListOutput("TPC_nsigmaK_VsPtpc", AliRsnListOutput::kHistoDefault);
+    outMonitorTPCnsigmaK->AddValue(axisMomTPC);
+    outMonitorTPCnsigmaK->AddValue(axisTPCnsigmaK);
+    if (mon) mon->Add(outMonitorTPCnsigmaK);
+    if (lm) lm->AddOutput(outMonitorTPCnsigmaK);
 
+    // output: 2D histogram of TPC nsigma pro vs. TPC momentum
+    AliRsnListOutput *outMonitorTPCnsigmaP = new AliRsnListOutput("TPC_nsigmaPro_VsPtpc", AliRsnListOutput::kHistoDefault);
+    outMonitorTPCnsigmaP->AddValue(axisMomTPC);
+    outMonitorTPCnsigmaP->AddValue(axisTPCnsigmaP);
+    if (mon) mon->Add(outMonitorTPCnsigmaP);
+    if (lm) lm->AddOutput(outMonitorTPCnsigmaP);
+  }
   /****************************************************************/
   /***************       MONITOR TOF           ********************/
   /****************************************************************/
-  // output: 2D histogram of TOF signal vs. momentum
-  AliRsnListOutput *outMonitorTimeTOF = new AliRsnListOutput("time_VsP", AliRsnListOutput::kHistoDefault);
-  outMonitorTimeTOF->AddValue(axisMomP);
-  outMonitorTimeTOF->AddValue(axisSigTOF);
-  if (mon) mon->Add(outMonitorTimeTOF);
-  if (lm) lm->AddOutput(outMonitorTimeTOF);
+  // output:2D histogram of TOF Nsigma pi vs. TPC Nsigma pi vs momentum
+  AliRsnListOutput *outMonitorTOFvsTPCnsigmaPi = new AliRsnListOutput("TOFnsigmaPi_TPCnsigmaPi", AliRsnListOutput::kHistoDefault);
+  outMonitorTOFvsTPCnsigmaPi->AddValue(axisTOFnsigmaPi);
+  outMonitorTOFvsTPCnsigmaPi->AddValue(axisTPCnsigmaPi);
+  if (useTH3) outMonitorTOFvsTPCnsigmaPi->AddValue(axisMomP);
+  if (mon) mon->Add(outMonitorTOFvsTPCnsigmaPi);
+  if (lm) lm->AddOutput(outMonitorTOFvsTPCnsigmaPi);
+  
+  // output:2D histogram of TOF Nsigma pi vs. TPC Nsigma pi vs momentum
+  AliRsnListOutput *outMonitorTOFvsTPCnsigmaK = new AliRsnListOutput("TOFnsigmaK_TPCnsigmaK", AliRsnListOutput::kHistoDefault);
+  outMonitorTOFvsTPCnsigmaK->AddValue(axisTOFnsigmaK);
+  outMonitorTOFvsTPCnsigmaK->AddValue(axisTPCnsigmaK);
+  if (useTH3) outMonitorTOFvsTPCnsigmaK->AddValue(axisMomP);
+  if (mon) mon->Add(outMonitorTOFvsTPCnsigmaK);
+  if (lm) lm->AddOutput(outMonitorTOFvsTPCnsigmaK);
+
+  AliRsnListOutput *outMonitorTOFvsTPCnsigmaP = new AliRsnListOutput("TOFnsigmaP_TPCnsigmaP", AliRsnListOutput::kHistoDefault);
+  outMonitorTOFvsTPCnsigmaP->AddValue(axisTOFnsigmaP);
+  outMonitorTOFvsTPCnsigmaP->AddValue(axisTPCnsigmaP);
+  if (useTH3) outMonitorTOFvsTPCnsigmaP->AddValue(axisMomP);
+  if (mon) mon->Add(outMonitorTOFvsTPCnsigmaP);
+  if (lm) lm->AddOutput(outMonitorTOFvsTPCnsigmaP);
 
-  // output: 2D histogram of TOF signal vs. pt
-  AliRsnListOutput *outMonitorTimeTOFPt = new AliRsnListOutput("time_VsPt", AliRsnListOutput::kHistoDefault);
-  outMonitorTimeTOFPt->AddValue(axisMomPt);
-  outMonitorTimeTOFPt->AddValue(axisSigTOF);
-  if (mon) mon->Add(outMonitorTimeTOFPt);
-  if (lm) lm->AddOutput(outMonitorTimeTOFPt);
+  // // output: 2D histogram of TOF signal vs. momentum
+  // AliRsnListOutput *outMonitorTimeTOF = new AliRsnListOutput("time_VsP", AliRsnListOutput::kHistoDefault);
+  // outMonitorTimeTOF->AddValue(axisMomP);
+  // outMonitorTimeTOF->AddValue(axisSigTOF);
+  // if (mon) mon->Add(outMonitorTimeTOF);
+  // if (lm) lm->AddOutput(outMonitorTimeTOF);
 
-  if (!opt.Contains("NoTOFSIGMA")) {
+  // // output: 2D histogram of TOF signal vs. pt
+  // AliRsnListOutput *outMonitorTimeTOFPt = new AliRsnListOutput("time_VsPt", AliRsnListOutput::kHistoDefault);
+  // outMonitorTimeTOFPt->AddValue(axisMomPt);
+  // outMonitorTimeTOFPt->AddValue(axisSigTOF);
+  // if (mon) mon->Add(outMonitorTimeTOFPt);
+  // if (lm) lm->AddOutput(outMonitorTimeTOFPt);
+
+  if (monitorTOFpid) {
     // output: 2D histogram of TOF Nsigma pi vs. TPC momentum
     AliRsnListOutput *outMonitorTOFnsigmaPi = new AliRsnListOutput("TOF_nsigmaPi_vsP", AliRsnListOutput::kHistoDefault);
     outMonitorTOFnsigmaPi->AddValue(axisMomP);
@@ -227,6 +330,27 @@ void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRs
     outMonitorTOFnsigmaP->AddValue(axisTOFnsigmaP);
     if (mon) mon->Add(outMonitorTOFnsigmaP);
     if (lm) lm->AddOutput(outMonitorTOFnsigmaP);
+
+   // output: 2D histogram of TOF Delta pi vs. TPC momentum
+    AliRsnListOutput *outMonitorTOFdeltaPi = new AliRsnListOutput("TOF_deltaPi_vsP", AliRsnListOutput::kHistoDefault);
+    outMonitorTOFdeltaPi->AddValue(axisMomP);
+    outMonitorTOFdeltaPi->AddValue(axisTOFdeltaPi);
+    if (mon) mon->Add(outMonitorTOFdeltaPi);
+    if (lm) lm->AddOutput(outMonitorTOFdeltaPi);
+     
+    // output: 2D histogram of TOF signal vs. TOF momentum
+    AliRsnListOutput *outMonitorTOFdeltaK = new AliRsnListOutput("TOF_deltaK_vsP", AliRsnListOutput::kHistoDefault);
+    outMonitorTOFdeltaK->AddValue(axisMomP);
+    outMonitorTOFdeltaK->AddValue(axisTOFdeltaK);
+    if (mon) mon->Add(outMonitorTOFdeltaK);
+    if (lm) lm->AddOutput(outMonitorTOFdeltaK);
+      
+    // output: 2D histogram of TOF signal vs. TOF momentum
+    AliRsnListOutput *outMonitorTOFdeltaP = new AliRsnListOutput("TOF_deltaPro_vsP", AliRsnListOutput::kHistoDefault);
+    outMonitorTOFdeltaP->AddValue(axisMomP);
+    outMonitorTOFdeltaP->AddValue(axisTOFdeltaP);
+    if (mon) mon->Add(outMonitorTOFdeltaP);
+    if (lm) lm->AddOutput(outMonitorTOFdeltaP);
   }
 
   /****************************************************************/