ROOT logo
/***************************************************************************
              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.02);
  AliRsnValueDaughter *axisMomP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kP);
  axisMomP->SetBins(0.0, 10.0, 0.02);
  // Momentum Pt
  AliRsnValueDaughter *axisMomPt = new AliRsnValueDaughter("pt", AliRsnValueDaughter::kPt);
  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, 12.0, 1.0);
  //TPC clusters
  AliRsnValueDaughter *axisTPCcls = new AliRsnValueDaughter("TPCcls", AliRsnValueDaughter::kNTPCclusters);
  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, 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.5, 2.5, 0.001);
  //DCA z
  AliRsnValueDaughter *axisDCAz = new AliRsnValueDaughter("DCAz", AliRsnValueDaughter::kDCAZ);
  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);
  // kTPCnsigmaPi
  AliRsnValueDaughter *axisTPCnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTPCnsigmaPi);
  axisTPCnsigmaPi->SetBins(-10.,10., 0.1);
  // kTPCnsigmaK
  AliRsnValueDaughter *axisTPCnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTPCnsigmaK);
  axisTPCnsigmaK->SetBins(-10.,10., 0.1);
  // kTPCnsigmaP
  AliRsnValueDaughter *axisTPCnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTPCnsigmaP);
  axisTPCnsigmaP->SetBins(-10.,10., 0.1);

  /* 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);
  // kTOFnsigmaK
  AliRsnValueDaughter *axisTOFnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTOFnsigmaK);
  axisTOFnsigmaK->SetBins(-10.,10., 0.1);
  // kTOFnsigmaP
  AliRsnValueDaughter *axisTOFnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTOFnsigmaP);
  axisTOFnsigmaP->SetBins(-10.,10., 0.1);
   
  /****************************************************************/
  /***************       MONITOR AOB           ********************/
  /****************************************************************/
  AliRsnListOutput *outMonitorPTvsMult = new AliRsnListOutput("PtVsMult",AliRsnListOutput::kHistoDefault);
  outMonitorPTvsMult->AddValue(axisMomPt);
  outMonitorPTvsMult->AddValue(multi);
  if (mon) mon->Add(outMonitorPTvsMult);
  if (lm) lm->AddOutput(outMonitorPTvsMult);

  //    if (lm) lm->SetTrueMC(kTRUE);
  /****************************************************************/
  /***************       MONITOR kinematics    ********************/
  /****************************************************************/
  // 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  ********************/
  /****************************************************************/
  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);
    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);
    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);
    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);
    if (!useTH1) outMonitorTPCclsVsPtpc->AddValue(axisMomTPC);
    outMonitorTPCclsVsPtpc->AddValue(axisTPCcls);
    if (mon) mon->Add(outMonitorTPCclsVsPtpc);
    if (lm) lm->AddOutput(outMonitorTPCclsVsPtpc);

    // 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 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 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           ********************/
  /****************************************************************/
  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 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 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 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. 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 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);
    outMonitorTOFnsigmaPi->AddValue(axisTOFnsigmaPi);
    if (mon) mon->Add(outMonitorTOFnsigmaPi);
    if (lm) lm->AddOutput(outMonitorTOFnsigmaPi);
     
    // output: 2D histogram of TOF signal vs. TOF momentum
    AliRsnListOutput *outMonitorTOFnsigmaK = new AliRsnListOutput("TOF_nsigmaK_vsP", AliRsnListOutput::kHistoDefault);
    outMonitorTOFnsigmaK->AddValue(axisMomP);
    outMonitorTOFnsigmaK->AddValue(axisTOFnsigmaK);
    if (mon) mon->Add(outMonitorTOFnsigmaK);
    if (lm) lm->AddOutput(outMonitorTOFnsigmaK);
      
    // output: 2D histogram of TOF signal vs. TOF momentum
    AliRsnListOutput *outMonitorTOFnsigmaP = new AliRsnListOutput("TOF_nsigmaPro_vsP", AliRsnListOutput::kHistoDefault);
    outMonitorTOFnsigmaP->AddValue(axisMomP);
    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);
  }

  /****************************************************************/
  /***************       MONITOR MC            ********************/
  /****************************************************************/
  if (useMCMon) {
    //Momentum 
    AliRsnValueDaughter *axisMomPMC = new AliRsnValueDaughter("pMC", AliRsnValueDaughter::kP);
    axisMomPMC->SetUseMCInfo(kTRUE);
    axisMomPMC->SetBins(0.0,10.0,0.01);
    // Momentum Pt
    AliRsnValueDaughter *axisMomPtMC = new AliRsnValueDaughter("ptMC", AliRsnValueDaughter::kPt);
    axisMomPtMC->SetUseMCInfo(kTRUE);
    axisMomPtMC->SetBins(0.0,10.0,0.01);
    // Eta
    AliRsnValueDaughter *axisEtaMC = new AliRsnValueDaughter("etaMC", AliRsnValueDaughter::kEta);
    axisEtaMC->SetUseMCInfo(kTRUE);
    axisEtaMC->SetBins(-1.0,1.0,0.1);

    // output: 2D histo for kine acceptance
    AliRsnListOutput *outMonitorPtVsEtaMC = new AliRsnListOutput("Pt_VsEtaMC", AliRsnListOutput::kHistoDefault);
    outMonitorPtVsEtaMC->AddValue(axisMomPtMC);
    outMonitorPtVsEtaMC->AddValue(axisEtaMC);
    if (mon) mon->Add(outMonitorPtVsEtaMC);
    if (lm) lm->AddOutput(outMonitorPtVsEtaMC);

    // output: 1D histo pt from MC
    AliRsnListOutput *outMonitorPtMC = new AliRsnListOutput("PtMC", AliRsnListOutput::kHistoDefault);
    outMonitorPtMC->AddValue(axisMomPtMC);
    if (mon) mon->Add(outMonitorPtMC);
    if (lm) lm->AddOutput(outMonitorPtMC);
 
    // output: 1D histo eta from MC
    AliRsnListOutput *outMonitorEtaMC = new AliRsnListOutput("EtaMC", AliRsnListOutput::kHistoDefault);
    outMonitorEtaMC->AddValue(axisEtaMC);
    if (mon) mon->Add(outMonitorEtaMC);
    if (lm) lm->AddOutput(outMonitorEtaMC);

    // output: 1D histo pt from MC
    AliRsnListOutput *outMonitorPtMC = new AliRsnListOutput("PtMC", AliRsnListOutput::kHistoDefault);
    outMonitorPtMC->AddValue(axisMomPtMC);
    if (mon) mon->Add(outMonitorPtMC);
    if (lm) lm->AddOutput(outMonitorPtMC);
  }
 
}
 AddMonitorOutput.C:1
 AddMonitorOutput.C:2
 AddMonitorOutput.C:3
 AddMonitorOutput.C:4
 AddMonitorOutput.C:5
 AddMonitorOutput.C:6
 AddMonitorOutput.C:7
 AddMonitorOutput.C:8
 AddMonitorOutput.C:9
 AddMonitorOutput.C:10
 AddMonitorOutput.C:11
 AddMonitorOutput.C:12
 AddMonitorOutput.C:13
 AddMonitorOutput.C:14
 AddMonitorOutput.C:15
 AddMonitorOutput.C:16
 AddMonitorOutput.C:17
 AddMonitorOutput.C:18
 AddMonitorOutput.C:19
 AddMonitorOutput.C:20
 AddMonitorOutput.C:21
 AddMonitorOutput.C:22
 AddMonitorOutput.C:23
 AddMonitorOutput.C:24
 AddMonitorOutput.C:25
 AddMonitorOutput.C:26
 AddMonitorOutput.C:27
 AddMonitorOutput.C:28
 AddMonitorOutput.C:29
 AddMonitorOutput.C:30
 AddMonitorOutput.C:31
 AddMonitorOutput.C:32
 AddMonitorOutput.C:33
 AddMonitorOutput.C:34
 AddMonitorOutput.C:35
 AddMonitorOutput.C:36
 AddMonitorOutput.C:37
 AddMonitorOutput.C:38
 AddMonitorOutput.C:39
 AddMonitorOutput.C:40
 AddMonitorOutput.C:41
 AddMonitorOutput.C:42
 AddMonitorOutput.C:43
 AddMonitorOutput.C:44
 AddMonitorOutput.C:45
 AddMonitorOutput.C:46
 AddMonitorOutput.C:47
 AddMonitorOutput.C:48
 AddMonitorOutput.C:49
 AddMonitorOutput.C:50
 AddMonitorOutput.C:51
 AddMonitorOutput.C:52
 AddMonitorOutput.C:53
 AddMonitorOutput.C:54
 AddMonitorOutput.C:55
 AddMonitorOutput.C:56
 AddMonitorOutput.C:57
 AddMonitorOutput.C:58
 AddMonitorOutput.C:59
 AddMonitorOutput.C:60
 AddMonitorOutput.C:61
 AddMonitorOutput.C:62
 AddMonitorOutput.C:63
 AddMonitorOutput.C:64
 AddMonitorOutput.C:65
 AddMonitorOutput.C:66
 AddMonitorOutput.C:67
 AddMonitorOutput.C:68
 AddMonitorOutput.C:69
 AddMonitorOutput.C:70
 AddMonitorOutput.C:71
 AddMonitorOutput.C:72
 AddMonitorOutput.C:73
 AddMonitorOutput.C:74
 AddMonitorOutput.C:75
 AddMonitorOutput.C:76
 AddMonitorOutput.C:77
 AddMonitorOutput.C:78
 AddMonitorOutput.C:79
 AddMonitorOutput.C:80
 AddMonitorOutput.C:81
 AddMonitorOutput.C:82
 AddMonitorOutput.C:83
 AddMonitorOutput.C:84
 AddMonitorOutput.C:85
 AddMonitorOutput.C:86
 AddMonitorOutput.C:87
 AddMonitorOutput.C:88
 AddMonitorOutput.C:89
 AddMonitorOutput.C:90
 AddMonitorOutput.C:91
 AddMonitorOutput.C:92
 AddMonitorOutput.C:93
 AddMonitorOutput.C:94
 AddMonitorOutput.C:95
 AddMonitorOutput.C:96
 AddMonitorOutput.C:97
 AddMonitorOutput.C:98
 AddMonitorOutput.C:99
 AddMonitorOutput.C:100
 AddMonitorOutput.C:101
 AddMonitorOutput.C:102
 AddMonitorOutput.C:103
 AddMonitorOutput.C:104
 AddMonitorOutput.C:105
 AddMonitorOutput.C:106
 AddMonitorOutput.C:107
 AddMonitorOutput.C:108
 AddMonitorOutput.C:109
 AddMonitorOutput.C:110
 AddMonitorOutput.C:111
 AddMonitorOutput.C:112
 AddMonitorOutput.C:113
 AddMonitorOutput.C:114
 AddMonitorOutput.C:115
 AddMonitorOutput.C:116
 AddMonitorOutput.C:117
 AddMonitorOutput.C:118
 AddMonitorOutput.C:119
 AddMonitorOutput.C:120
 AddMonitorOutput.C:121
 AddMonitorOutput.C:122
 AddMonitorOutput.C:123
 AddMonitorOutput.C:124
 AddMonitorOutput.C:125
 AddMonitorOutput.C:126
 AddMonitorOutput.C:127
 AddMonitorOutput.C:128
 AddMonitorOutput.C:129
 AddMonitorOutput.C:130
 AddMonitorOutput.C:131
 AddMonitorOutput.C:132
 AddMonitorOutput.C:133
 AddMonitorOutput.C:134
 AddMonitorOutput.C:135
 AddMonitorOutput.C:136
 AddMonitorOutput.C:137
 AddMonitorOutput.C:138
 AddMonitorOutput.C:139
 AddMonitorOutput.C:140
 AddMonitorOutput.C:141
 AddMonitorOutput.C:142
 AddMonitorOutput.C:143
 AddMonitorOutput.C:144
 AddMonitorOutput.C:145
 AddMonitorOutput.C:146
 AddMonitorOutput.C:147
 AddMonitorOutput.C:148
 AddMonitorOutput.C:149
 AddMonitorOutput.C:150
 AddMonitorOutput.C:151
 AddMonitorOutput.C:152
 AddMonitorOutput.C:153
 AddMonitorOutput.C:154
 AddMonitorOutput.C:155
 AddMonitorOutput.C:156
 AddMonitorOutput.C:157
 AddMonitorOutput.C:158
 AddMonitorOutput.C:159
 AddMonitorOutput.C:160
 AddMonitorOutput.C:161
 AddMonitorOutput.C:162
 AddMonitorOutput.C:163
 AddMonitorOutput.C:164
 AddMonitorOutput.C:165
 AddMonitorOutput.C:166
 AddMonitorOutput.C:167
 AddMonitorOutput.C:168
 AddMonitorOutput.C:169
 AddMonitorOutput.C:170
 AddMonitorOutput.C:171
 AddMonitorOutput.C:172
 AddMonitorOutput.C:173
 AddMonitorOutput.C:174
 AddMonitorOutput.C:175
 AddMonitorOutput.C:176
 AddMonitorOutput.C:177
 AddMonitorOutput.C:178
 AddMonitorOutput.C:179
 AddMonitorOutput.C:180
 AddMonitorOutput.C:181
 AddMonitorOutput.C:182
 AddMonitorOutput.C:183
 AddMonitorOutput.C:184
 AddMonitorOutput.C:185
 AddMonitorOutput.C:186
 AddMonitorOutput.C:187
 AddMonitorOutput.C:188
 AddMonitorOutput.C:189
 AddMonitorOutput.C:190
 AddMonitorOutput.C:191
 AddMonitorOutput.C:192
 AddMonitorOutput.C:193
 AddMonitorOutput.C:194
 AddMonitorOutput.C:195
 AddMonitorOutput.C:196
 AddMonitorOutput.C:197
 AddMonitorOutput.C:198
 AddMonitorOutput.C:199
 AddMonitorOutput.C:200
 AddMonitorOutput.C:201
 AddMonitorOutput.C:202
 AddMonitorOutput.C:203
 AddMonitorOutput.C:204
 AddMonitorOutput.C:205
 AddMonitorOutput.C:206
 AddMonitorOutput.C:207
 AddMonitorOutput.C:208
 AddMonitorOutput.C:209
 AddMonitorOutput.C:210
 AddMonitorOutput.C:211
 AddMonitorOutput.C:212
 AddMonitorOutput.C:213
 AddMonitorOutput.C:214
 AddMonitorOutput.C:215
 AddMonitorOutput.C:216
 AddMonitorOutput.C:217
 AddMonitorOutput.C:218
 AddMonitorOutput.C:219
 AddMonitorOutput.C:220
 AddMonitorOutput.C:221
 AddMonitorOutput.C:222
 AddMonitorOutput.C:223
 AddMonitorOutput.C:224
 AddMonitorOutput.C:225
 AddMonitorOutput.C:226
 AddMonitorOutput.C:227
 AddMonitorOutput.C:228
 AddMonitorOutput.C:229
 AddMonitorOutput.C:230
 AddMonitorOutput.C:231
 AddMonitorOutput.C:232
 AddMonitorOutput.C:233
 AddMonitorOutput.C:234
 AddMonitorOutput.C:235
 AddMonitorOutput.C:236
 AddMonitorOutput.C:237
 AddMonitorOutput.C:238
 AddMonitorOutput.C:239
 AddMonitorOutput.C:240
 AddMonitorOutput.C:241
 AddMonitorOutput.C:242
 AddMonitorOutput.C:243
 AddMonitorOutput.C:244
 AddMonitorOutput.C:245
 AddMonitorOutput.C:246
 AddMonitorOutput.C:247
 AddMonitorOutput.C:248
 AddMonitorOutput.C:249
 AddMonitorOutput.C:250
 AddMonitorOutput.C:251
 AddMonitorOutput.C:252
 AddMonitorOutput.C:253
 AddMonitorOutput.C:254
 AddMonitorOutput.C:255
 AddMonitorOutput.C:256
 AddMonitorOutput.C:257
 AddMonitorOutput.C:258
 AddMonitorOutput.C:259
 AddMonitorOutput.C:260
 AddMonitorOutput.C:261
 AddMonitorOutput.C:262
 AddMonitorOutput.C:263
 AddMonitorOutput.C:264
 AddMonitorOutput.C:265
 AddMonitorOutput.C:266
 AddMonitorOutput.C:267
 AddMonitorOutput.C:268
 AddMonitorOutput.C:269
 AddMonitorOutput.C:270
 AddMonitorOutput.C:271
 AddMonitorOutput.C:272
 AddMonitorOutput.C:273
 AddMonitorOutput.C:274
 AddMonitorOutput.C:275
 AddMonitorOutput.C:276
 AddMonitorOutput.C:277
 AddMonitorOutput.C:278
 AddMonitorOutput.C:279
 AddMonitorOutput.C:280
 AddMonitorOutput.C:281
 AddMonitorOutput.C:282
 AddMonitorOutput.C:283
 AddMonitorOutput.C:284
 AddMonitorOutput.C:285
 AddMonitorOutput.C:286
 AddMonitorOutput.C:287
 AddMonitorOutput.C:288
 AddMonitorOutput.C:289
 AddMonitorOutput.C:290
 AddMonitorOutput.C:291
 AddMonitorOutput.C:292
 AddMonitorOutput.C:293
 AddMonitorOutput.C:294
 AddMonitorOutput.C:295
 AddMonitorOutput.C:296
 AddMonitorOutput.C:297
 AddMonitorOutput.C:298
 AddMonitorOutput.C:299
 AddMonitorOutput.C:300
 AddMonitorOutput.C:301
 AddMonitorOutput.C:302
 AddMonitorOutput.C:303
 AddMonitorOutput.C:304
 AddMonitorOutput.C:305
 AddMonitorOutput.C:306
 AddMonitorOutput.C:307
 AddMonitorOutput.C:308
 AddMonitorOutput.C:309
 AddMonitorOutput.C:310
 AddMonitorOutput.C:311
 AddMonitorOutput.C:312
 AddMonitorOutput.C:313
 AddMonitorOutput.C:314
 AddMonitorOutput.C:315
 AddMonitorOutput.C:316
 AddMonitorOutput.C:317
 AddMonitorOutput.C:318
 AddMonitorOutput.C:319
 AddMonitorOutput.C:320
 AddMonitorOutput.C:321
 AddMonitorOutput.C:322
 AddMonitorOutput.C:323
 AddMonitorOutput.C:324
 AddMonitorOutput.C:325
 AddMonitorOutput.C:326
 AddMonitorOutput.C:327
 AddMonitorOutput.C:328
 AddMonitorOutput.C:329
 AddMonitorOutput.C:330
 AddMonitorOutput.C:331
 AddMonitorOutput.C:332
 AddMonitorOutput.C:333
 AddMonitorOutput.C:334
 AddMonitorOutput.C:335
 AddMonitorOutput.C:336
 AddMonitorOutput.C:337
 AddMonitorOutput.C:338
 AddMonitorOutput.C:339
 AddMonitorOutput.C:340
 AddMonitorOutput.C:341
 AddMonitorOutput.C:342
 AddMonitorOutput.C:343
 AddMonitorOutput.C:344
 AddMonitorOutput.C:345
 AddMonitorOutput.C:346
 AddMonitorOutput.C:347
 AddMonitorOutput.C:348
 AddMonitorOutput.C:349
 AddMonitorOutput.C:350
 AddMonitorOutput.C:351
 AddMonitorOutput.C:352
 AddMonitorOutput.C:353
 AddMonitorOutput.C:354
 AddMonitorOutput.C:355
 AddMonitorOutput.C:356
 AddMonitorOutput.C:357
 AddMonitorOutput.C:358
 AddMonitorOutput.C:359
 AddMonitorOutput.C:360
 AddMonitorOutput.C:361
 AddMonitorOutput.C:362
 AddMonitorOutput.C:363
 AddMonitorOutput.C:364
 AddMonitorOutput.C:365
 AddMonitorOutput.C:366
 AddMonitorOutput.C:367
 AddMonitorOutput.C:368
 AddMonitorOutput.C:369
 AddMonitorOutput.C:370
 AddMonitorOutput.C:371
 AddMonitorOutput.C:372
 AddMonitorOutput.C:373
 AddMonitorOutput.C:374
 AddMonitorOutput.C:375
 AddMonitorOutput.C:376
 AddMonitorOutput.C:377
 AddMonitorOutput.C:378
 AddMonitorOutput.C:379
 AddMonitorOutput.C:380
 AddMonitorOutput.C:381
 AddMonitorOutput.C:382
 AddMonitorOutput.C:383
 AddMonitorOutput.C:384
 AddMonitorOutput.C:385
 AddMonitorOutput.C:386
 AddMonitorOutput.C:387
 AddMonitorOutput.C:388
 AddMonitorOutput.C:389
 AddMonitorOutput.C:390
 AddMonitorOutput.C:391
 AddMonitorOutput.C:392
 AddMonitorOutput.C:393
 AddMonitorOutput.C:394
 AddMonitorOutput.C:395
 AddMonitorOutput.C:396
 AddMonitorOutput.C:397
 AddMonitorOutput.C:398
 AddMonitorOutput.C:399
 AddMonitorOutput.C:400