]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fix typo in AddRsnDaughterCuts*NSigma + changed binning in monitoring histos + fix...
authorfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Nov 2012 07:55:42 +0000 (07:55 +0000)
committerfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Nov 2012 07:55:42 +0000 (07:55 +0000)
PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsPhiNsigma.C
PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsRho.C
PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsRhoNsigma.C
PWGLF/RESONANCES/macros/lego_train/AddRsnPairsPhi.C
PWGLF/RESONANCES/macros/lego_train/AddRsnPairsRho.C
PWGLF/RESONANCES/macros/lego_train/RsnConfig.C
PWGLF/RESONANCES/macros/lego_train/RunALICE.C
PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C

index a0315198f5cf035c6bd3116972ceb9524854fe67..fe9bbc786a328366a610cfaa75e2cd73c9eec564 100644 (file)
@@ -56,7 +56,7 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
    if (opt.Contains("KTPCnsig20")) nSigmaTPC = 2.0;
    if (opt.Contains("KTPCnsig25")) nSigmaTPC = 2.5;
    if (opt.Contains("KTPCnsig30")) nSigmaTPC = 3.0;
-   if (opt.Contains("KTPCnsig1000")) nSigmaTPD = 100.0;
+   if (opt.Contains("KTPCnsig1000")) nSigmaTPC = 100.0;
 
    if (opt.Contains("KTOFnsig10")) nSigmaTOF = 1.0;
    if (opt.Contains("KTOFnsig15")) nSigmaTOF = 1.5;
index 6d44f69271a6b5d6751b782abdd5308ea71aed06..ae233d3bbacab883bf85cd582de360ddab862d61 100644 (file)
-#ifndef __CINT__\r
-#include <AliRsnCutPIDNSigma.h>\r
-#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>\r
-#endif\r
-Int_t AddRsnDaughterCutsRho(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)\r
-{\r
-\r
-   if (!rsnIH) return 0;\r
-\r
-   Bool_t valid = kTRUE;\r
-   Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);\r
-\r
-   Bool_t usePPCut = kFALSE;\r
-\r
-   if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;\r
-\r
-\r
-   // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====\r
-   Int_t numberOfCuts = 1;\r
-\r
-   //---------------------------------------------\r
-   //  Define single cuts\r
-   //---------------------------------------------\r
-\r
-   Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());\r
-\r
-   Double_t nSigmaTPC=3.0;\r
-   Double_t nSigmaTOF=3.0;\r
-   Double_t etaRange=0.8;\r
-\r
-   if (opt.Contains("TPCsigma1")) nSigmaTPC = 1.0;\r
-   if (opt.Contains("TPCsigma2")) nSigmaTPC = 2.0;\r
-   if (opt.Contains("TPCsigma3")) nSigmaTPC = 3.0;\r
-\r
-   if (opt.Contains("TOFsigma1")) nSigmaTOF = 1.0;\r
-   if (opt.Contains("TOFsigma2")) nSigmaTOF = 2.0;\r
-   if (opt.Contains("TOFsigma3")) nSigmaTOF = 3.0;\r
-\r
-   Bool_t usePDG=kFALSE;\r
-   if (opt.Contains("pdg")) {\r
-      Printf("Using PDG");\r
-      usePDG = kTRUE;\r
-   }\r
-\r
-   Bool_t useEta = kFALSE;\r
-   if (opt.Contains("eta")) {\r
-      Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);\r
-      useEta = kTRUE;\r
-   }\r
-\r
-   Bool_t usetof = kFALSE;\r
-   if(opt.Contains("tof")) {\r
-      Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);\r
-      usetof = kTRUE;\r
-   }\r
-\r
-   Bool_t usetpc = kFALSE;\r
-   if(opt.Contains("tpc")) {\r
-      Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);\r
-      usetpc = kTRUE;\r
-   }\r
-\r
-//---------------------------------------------\r
-//  Combine cuts\r
-//---------------------------------------------\r
-\r
-   TString cutname = "pionRho";\r
-   if (!opt.IsNull()) cutname += Form("_%s",opt.Data());\r
-   AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);\r
-\r
-   TString scheme="";\r
-\r
-   AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatity");\r
-   //qualityCut->SetDefaults2010();\r
-   //qualityCut->SetDCAZmax(0.3);\r
-   //qualityCut->SetDCARmax(0.05);\r
-\r
-   qualityCut->SetDCAZmax(0.2);\r
-   qualityCut->SetDCARmax(0.02);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r
-\r
-\r
-   qualityCut->SetPtRange(0.15, 1E+20);\r
-   qualityCut->SetEtaRange(-0.8, 0.8);\r
-   qualityCut->SetSPDminNClusters(0);\r
-   qualityCut->SetITSminNClusters(0);\r
-   qualityCut->SetITSmaxChi2(1E+20);\r
-   qualityCut->SetTPCminNClusters(80);\r
-   qualityCut->SetTPCmaxChi2(4.0);\r
-   qualityCut->SetRejectKinkDaughters();\r
-   cuts->AddCut(qualityCut);\r
-   if (!scheme.IsNull()) scheme += "&";\r
-   scheme += qualityCut->GetName();\r
-\r
-   if (usetpc) {\r
-      AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r
-      cutPiTPC->SinglePIDRange(nSigmaTPC);\r
-      //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);\r
-      cuts->AddCut(cutPiTPC);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPiTPC->GetName();\r
-   }\r
-\r
-   if(usetof) {\r
-      AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r
-      cutPiTOF->SinglePIDRange(nSigmaTOF);\r
-      //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);\r
-      cuts->AddCut(cutPiTOF);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPiTOF->GetName();\r
-   }\r
-\r
-   if (useEta) {\r
-      Printf("Adding ETA ...");\r
-      AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);\r
-      AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);\r
-      cutEta->SetTargetType(AliRsnTarget::kDaughter);\r
-      cutEta->SetValueObj(valEta);\r
-      cuts->AddCut(cutEta);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutEta->GetName();\r
-   }\r
-   if (usePDG) {\r
-      Printf("Adding PDG ...");\r
-      AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);\r
-      cuts->AddCut(cutPDG);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPDG->GetName();\r
-   }\r
-\r
-   Printf ("CUT Scheme is '%s'",scheme.Data());\r
-   cuts->SetCutScheme(scheme.Data());\r
-\r
-   if (opt.Contains("mon")) {\r
-      AddMonitorOutput(cuts->GetMonitorOutput(),opt);\r
-   }\r
-   if (isRsnMini) {\r
-      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);\r
-      if (taskRsnMini) {\r
-         taskRsnMini->AddTrackCuts(cuts);\r
-      }\r
-   } else {\r
-      AliRsnDaughterSelector *sel = rsnIH->GetSelector();\r
-//       sel->SetLabelCheck(kFALSE);\r
-      sel->Add(cuts, kTRUE);\r
-   }\r
-   return numberOfCuts;\r
-\r
-}\r
-\r
+#ifndef __CINT__
+#include <AliRsnCutPIDNSigma.h>
+#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>
+#endif
+Int_t AddRsnDaughterCutsRho(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,Bool_t isRsnMini=kFALSE,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
+{
+
+   if (!rsnIH) return 0;
+
+   Bool_t valid = kTRUE;
+   Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);
+
+   Bool_t usePPCut = kFALSE;
+
+   if (isPP && (opt.Contains("usePP"))) usePPCut = kTRUE;
+
+
+   // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
+   Int_t numberOfCuts = 1;
+
+   //---------------------------------------------
+   //  Define single cuts
+   //---------------------------------------------
+
+   Printf("AliRsnCutPIDNSigma Option : %s",opt.Data());
+
+   Double_t nSigmaTPC=3.0;
+   Double_t nSigmaTOF=3.0;
+   Double_t etaRange=0.8;
+
+   if (opt.Contains("TPCsigma1")) nSigmaTPC = 1.0;
+   if (opt.Contains("TPCsigma2")) nSigmaTPC = 2.0;
+   if (opt.Contains("TPCsigma3")) nSigmaTPC = 3.0;
+
+   if (opt.Contains("TOFsigma1")) nSigmaTOF = 1.0;
+   if (opt.Contains("TOFsigma2")) nSigmaTOF = 2.0;
+   if (opt.Contains("TOFsigma3")) nSigmaTOF = 3.0;
+
+   Bool_t usePDG=kFALSE;
+   if (opt.Contains("pdg")) {
+      Printf("Using PDG");
+      usePDG = kTRUE;
+   }
+
+   Bool_t useEta = kFALSE;
+   if (opt.Contains("eta")) {
+      Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
+      useEta = kTRUE;
+   }
+
+   Bool_t usetof = kFALSE;
+   if(opt.Contains("tof")) {
+      Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);
+      usetof = kTRUE;
+   }
+
+   Bool_t usetpc = kFALSE;
+   if(opt.Contains("tpc")) {
+      Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);
+      usetpc = kTRUE;
+   }
+
+//---------------------------------------------
+//  Combine cuts
+//---------------------------------------------
+
+   TString cutname = "pionRho";
+   if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
+   AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
+
+   TString scheme="";
+
+   AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatity");
+   //qualityCut->SetDefaults2010();
+   //qualityCut->SetDCAZmax(0.3);
+   //qualityCut->SetDCARmax(0.05);
+
+   qualityCut->SetDCAZmax(0.2);
+   qualityCut->SetDCARmax(0.02);
+   qualityCut->AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);
+   qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
+   qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
+
+
+   qualityCut->SetPtRange(0.15, 1E+20);
+   qualityCut->SetEtaRange(-0.8, 0.8);
+   qualityCut->SetSPDminNClusters(0);
+   qualityCut->SetITSminNClusters(0);
+   qualityCut->SetITSmaxChi2(1E+20);
+   qualityCut->SetTPCminNClusters(80);
+   qualityCut->SetTPCmaxChi2(4.0);
+   qualityCut->SetRejectKinkDaughters();
+   cuts->AddCut(qualityCut);
+   if (!scheme.IsNull()) scheme += "&";
+   scheme += qualityCut->GetName();
+
+   if (usetpc) {
+      AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
+      cutPiTPC->SinglePIDRange(nSigmaTPC);
+      //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);
+      cuts->AddCut(cutPiTPC);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPiTPC->GetName();
+   }
+
+   if(usetof) {
+      AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
+      cutPiTOF->SinglePIDRange(nSigmaTOF);
+      //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);
+      cuts->AddCut(cutPiTOF);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPiTOF->GetName();
+   }
+
+   if (useEta) {
+      Printf("Adding ETA ...");
+      AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
+      AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
+      cutEta->SetTargetType(AliRsnTarget::kDaughter);
+      cutEta->SetValueObj(valEta);
+      cuts->AddCut(cutEta);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutEta->GetName();
+   }
+   if (usePDG) {
+      Printf("Adding PDG ...");
+      AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
+      cuts->AddCut(cutPDG);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPDG->GetName();
+   }
+
+   Printf ("CUT Scheme is '%s'",scheme.Data());
+   cuts->SetCutScheme(scheme.Data());
+
+   if (opt.Contains("mon")) {
+      AddMonitorOutput(cuts->GetMonitorOutput(),opt);
+   }
+   if (isRsnMini) {
+      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
+      if (taskRsnMini) {
+         taskRsnMini->AddTrackCuts(cuts);
+      }
+   } else {
+      AliRsnDaughterSelector *sel = rsnIH->GetSelector();
+//       sel->SetLabelCheck(kFALSE);
+      sel->Add(cuts, kTRUE);
+   }
+   return numberOfCuts;
+
+}
+
index e803e824fd594dc5503ef86a48a382a82daaf750..81e7c52612a1beafedf7645fc1ee38171af8eaf8 100644 (file)
-#ifndef __CINT__\r
-#include <AliRsnCutPIDNSigma.h>\r
-#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>\r
-#endif\r
-Int_t AddRsnDaughterCutsRhoNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)\r
-{\r
-\r
-   if (!rsnIH) return 0;\r
-\r
-   Bool_t valid;\r
-   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);\r
-\r
-   // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====\r
-   Int_t numberOfCuts = 1;\r
-\r
-   //---------------------------------------------\r
-   //  Define single cuts\r
-   //---------------------------------------------\r
-\r
-   Printf("AddRsnDaughterCutsRho Option : %s",opt.Data());\r
-\r
-   Double_t nSigmaTPC=3.0;\r
-   Double_t nSigmaTOF=3.0;\r
-   Double_t etaRange=0.8;\r
-   Bool_t useTPC_Pi=kFALSE;\r
-   Bool_t useTOF_Pi=kFALSE;\r
-\r
-   if (opt.Contains("qualityonly")) {\r
-      useTPC_Pi=kFALSE;\r
-      useTOF_Pi=kFALSE;\r
-   } else if (!opt.Contains("nsig")) {\r
-      useTPC_Pi=kTRUE;\r
-      useTOF_Pi=kTRUE;\r
-   }\r
-\r
-   if (opt.Contains("PiTPCnsig"))  useTPC_Pi=kTRUE;\r
-   if (opt.Contains("PiTOFnsig"))  useTOF_Pi=kTRUE;\r
-\r
-   if (opt.Contains("PiTPCnsig10")) nSigmaTPC = 1.0;\r
-   if (opt.Contains("PiTPCnsig15")) nSigmaTPC = 1.5;\r
-   if (opt.Contains("PiTPCnsig20")) nSigmaTPC = 2.0;\r
-   if (opt.Contains("PiTPCnsig25")) nSigmaTPC = 2.5;\r
-   if (opt.Contains("PiTPCnsig30")) nSigmaTPC = 3.0;\r
-\r
-   if (opt.Contains("PiTOFnsig10")) nSigmaTOF = 1.0;\r
-   if (opt.Contains("PiTOFnsig15")) nSigmaTOF = 1.5;\r
-   if (opt.Contains("PiTOFnsig20")) nSigmaTOF = 2.0;\r
-   if (opt.Contains("PiTOFnsig25")) nSigmaTOF = 2.5;\r
-   if (opt.Contains("PiTOFnsig30")) nSigmaTOF = 3.0;\r
-\r
-   Bool_t usePDG=kFALSE;\r
-   if (opt.Contains("pdg")) {\r
-      Printf("Using PDG");\r
-      usePDG = kTRUE;\r
-   }\r
-\r
-   Bool_t useEta = kFALSE;\r
-   if (opt.Contains("eta")) {\r
-      Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);\r
-      useEta = kTRUE;\r
-   }\r
-\r
-//---------------------------------------------\r
-//  Combine cuts\r
-//---------------------------------------------\r
-\r
-   TString cutname = "Pi_Rho";\r
-   if (!opt.IsNull()) cutname += Form("_%s",opt.Data());\r
-   AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);\r
-\r
-   TString scheme="";\r
-\r
-   AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatityPi");\r
-   //qualityCut->SetDefaults2010();\r
-\r
-   qualityCut->SetDCAZmax(0.2);\r
-   qualityCut->SetDCARmax(0.02);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r
-   qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r
-\r
-   qualityCut->SetPtRange(0.2, 1E+20);\r
-   qualityCut->SetEtaRange(-0.8, 0.8);\r
-   qualityCut->SetSPDminNClusters(0);\r
-   qualityCut->SetITSminNClusters(0);\r
-   qualityCut->SetITSmaxChi2(1E+20);\r
-   qualityCut->SetTPCminNClusters(70);\r
-   qualityCut->SetTPCmaxChi2(4.0);\r
-   qualityCut->SetRejectKinkDaughters();\r
-\r
-   cuts->AddCut(qualityCut);\r
-   if (!scheme.IsNull()) scheme += "&";\r
-   scheme += qualityCut->GetName();\r
-\r
-   if (useTPC_Pi) {\r
-      AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r
-      cutPiTPC->SinglePIDRange(nSigmaTPC);\r
-      cuts->AddCut(cutPiTPC);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPiTPC->GetName();\r
-   }\r
-   if (useTOF_Pi) {\r
-      AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r
-      cutPiTOF->SinglePIDRange(nSigmaTOF);\r
-      cuts->AddCut(cutPiTOF);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPiTOF->GetName();\r
-   }\r
-   if (useEta) {\r
-      Printf("Adding ETA ...");\r
-      AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);\r
-      AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);\r
-      cutEta->SetTargetType(AliRsnTarget::kDaughter);\r
-      cutEta->SetValueObj(valEta);\r
-      cuts->AddCut(cutEta);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutEta->GetName();\r
-   }\r
-   if (usePDG) {\r
-      Printf("Adding PDG ...");\r
-      AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);\r
-      cuts->AddCut(cutPDG);\r
-      if (!scheme.IsNull()) scheme += "&";\r
-      scheme += cutPDG->GetName();\r
-   }\r
-\r
-   Printf ("CUT Scheme is '%s'",scheme.Data());\r
-   cuts->SetCutScheme(scheme.Data());\r
-\r
-   if (opt.Contains("mon")) {\r
-      AddMonitorOutput(cuts->GetMonitorOutput(),opt);\r
-   }\r
-   if (isRsnMini) {\r
-      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);\r
-      if (taskRsnMini) {\r
-         taskRsnMini->AddTrackCuts(cuts);\r
-      }\r
-   } else {\r
-      AliRsnDaughterSelector *sel = rsnIH->GetSelector();\r
-//       sel->SetLabelCheck(kFALSE);\r
-      sel->Add(cuts, kTRUE);\r
-   }\r
-   return numberOfCuts;\r
-\r
-}\r
-\r
+#ifndef __CINT__
+#include <AliRsnCutPIDNSigma.h>
+#include <PWGLF/RESONANCES/AliRsnCutTrackQuality.h>
+#endif
+Int_t AddRsnDaughterCutsRhoNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
+{
+
+   if (!rsnIH) return 0;
+
+   Bool_t valid;
+   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
+
+   // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
+   Int_t numberOfCuts = 1;
+
+   //---------------------------------------------
+   //  Define single cuts
+   //---------------------------------------------
+
+   Printf("AddRsnDaughterCutsRho Option : %s",opt.Data());
+
+   Double_t nSigmaTPC=3.0;
+   Double_t nSigmaTOF=3.0;
+   Double_t etaRange=0.8;
+   Bool_t useTPC_Pi=kFALSE;
+   Bool_t useTOF_Pi=kFALSE;
+
+   if (opt.Contains("qualityonly")) {
+      useTPC_Pi=kFALSE;
+      useTOF_Pi=kFALSE;
+   } else if (!opt.Contains("nsig")) {
+      useTPC_Pi=kTRUE;
+      useTOF_Pi=kTRUE;
+   }
+
+   if (opt.Contains("PiTPCnsig"))  useTPC_Pi=kTRUE;
+   if (opt.Contains("PiTOFnsig"))  useTOF_Pi=kTRUE;
+
+   if (opt.Contains("PiTPCnsig10")) nSigmaTPC = 1.0;
+   if (opt.Contains("PiTPCnsig15")) nSigmaTPC = 1.5;
+   if (opt.Contains("PiTPCnsig20")) nSigmaTPC = 2.0;
+   if (opt.Contains("PiTPCnsig25")) nSigmaTPC = 2.5;
+   if (opt.Contains("PiTPCnsig30")) nSigmaTPC = 3.0;
+
+   if (opt.Contains("PiTOFnsig10")) nSigmaTOF = 1.0;
+   if (opt.Contains("PiTOFnsig15")) nSigmaTOF = 1.5;
+   if (opt.Contains("PiTOFnsig20")) nSigmaTOF = 2.0;
+   if (opt.Contains("PiTOFnsig25")) nSigmaTOF = 2.5;
+   if (opt.Contains("PiTOFnsig30")) nSigmaTOF = 3.0;
+
+   Bool_t usePDG=kFALSE;
+   if (opt.Contains("pdg")) {
+      Printf("Using PDG");
+      usePDG = kTRUE;
+   }
+
+   Bool_t useEta = kFALSE;
+   if (opt.Contains("eta")) {
+      Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
+      useEta = kTRUE;
+   }
+
+//---------------------------------------------
+//  Combine cuts
+//---------------------------------------------
+
+   TString cutname = "Pi_Rho";
+   if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
+   AliRsnCutSet *cuts = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
+
+   TString scheme="";
+
+   AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatityPi");
+   //qualityCut->SetDefaults2010();
+
+   qualityCut->SetDCAZmax(0.2);
+   qualityCut->SetDCARmax(0.02);
+   qualityCut->AddStatusFlag(AliESDtrack::kTPCin   , kTRUE);
+   qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
+   qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
+
+   qualityCut->SetPtRange(0.2, 1E+20);
+   qualityCut->SetEtaRange(-0.8, 0.8);
+   qualityCut->SetSPDminNClusters(0);
+   qualityCut->SetITSminNClusters(0);
+   qualityCut->SetITSmaxChi2(1E+20);
+   qualityCut->SetTPCminNClusters(70);
+   qualityCut->SetTPCmaxChi2(4.0);
+   qualityCut->SetRejectKinkDaughters();
+
+   cuts->AddCut(qualityCut);
+   if (!scheme.IsNull()) scheme += "&";
+   scheme += qualityCut->GetName();
+
+   if (useTPC_Pi) {
+      AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
+      cutPiTPC->SinglePIDRange(nSigmaTPC);
+      cuts->AddCut(cutPiTPC);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPiTPC->GetName();
+   }
+   if (useTOF_Pi) {
+      AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
+      cutPiTOF->SinglePIDRange(nSigmaTOF);
+      cuts->AddCut(cutPiTOF);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPiTOF->GetName();
+   }
+   if (useEta) {
+      Printf("Adding ETA ...");
+      AliRsnValueDaughter *valEta = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
+      AliRsnCutValue *cutEta = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
+      cutEta->SetTargetType(AliRsnTarget::kDaughter);
+      cutEta->SetValueObj(valEta);
+      cuts->AddCut(cutEta);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutEta->GetName();
+   }
+   if (usePDG) {
+      Printf("Adding PDG ...");
+      AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
+      cuts->AddCut(cutPDG);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutPDG->GetName();
+   }
+
+   Printf ("CUT Scheme is '%s'",scheme.Data());
+   cuts->SetCutScheme(scheme.Data());
+
+   if (opt.Contains("mon")) {
+      AddMonitorOutput(cuts->GetMonitorOutput(),opt);
+   }
+   if (isRsnMini) {
+      AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
+      if (taskRsnMini) {
+         taskRsnMini->AddTrackCuts(cuts);
+      }
+   } else {
+      AliRsnDaughterSelector *sel = rsnIH->GetSelector();
+//       sel->SetLabelCheck(kFALSE);
+      sel->Add(cuts, kTRUE);
+   }
+   return numberOfCuts;
+
+}
+
index 01722c6e76bda4be2b644f62c767eaf0ad7b0db4..0d35df54278b67171d828288d986a77e8aac6b73 100644 (file)
@@ -86,7 +86,7 @@ void AddPairOutputMiniPhi(AliAnalysisTaskSE *task, Bool_t isMC,Bool_t isMixing,
    Int_t useMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);
    Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
 
-   Int_t useRapidity = AliAnalysisManager::GetGlobalInt("RsnUseRapidity",valid);
+   Int_t useRapidity = AliRsnTrainManager::GetGlobalInt("RsnUseRapidity",valid);
 
    AliRsnMiniAnalysisTask *taskRsnMini =  (AliRsnMiniAnalysisTask *)task;
 
@@ -131,6 +131,7 @@ void AddPairOutputMiniPhi(AliAnalysisTaskSE *task, Bool_t isMC,Bool_t isMixing,
    Int_t nY   = 1; Double_t minY   = -0.5, maxY =  0.5;
 //   Int_t nIM   = 1000; Double_t minIM   = 0.9, maxIM =  1.9;
    Int_t nPt   = 120; Double_t minPt   = 0.0, maxPt = 12.0;
+   if (collisionType==0) nPt = 240;minPt=0.0;maxPt=24.0;
    Int_t nCent = 20; Double_t minCent = 0.0, maxCent = 100.0;
    Int_t nRes  = 200; Double_t maxRes  = 0.01;
 
index d46cb9c1dfcd331559c07ba55c409648b4dbd1c3..0d34164173a6e9de98ab3f3fed1060ec89bd1313 100644 (file)
-#ifndef __CINT__\r
-#include <AliRsnValuePair.h>\r
-#endif\r
-\r
-void AddRsnPairsRho(AliAnalysisTaskSE *task,\r
-                    Bool_t isMC,\r
-                    Bool_t isMixing,\r
-                    AliPID::EParticleType pType1,\r
-                    Int_t listID1,\r
-                    AliPID::EParticleType pType2,\r
-                    Int_t listID2,\r
-                    AliRsnCutSet *cutsEvent=0,\r
-                    AliRsnCutSet *cutsPair=0,\r
-                    TString suffix = "") {\r
-\r
-   Printf("id1=%d id2=%d",listID1,listID2);\r
-\r
-   // retrieve mass from PDG database\r
-\r
-   // pdg rho = 133\r
-   // pdg omega = 223\r
-   // pdg eta = 221\r
-   // pdg eta' = 331\r
-   // pdg kshort = 310\r
-\r
-   Int_t         pdg  = 113;\r
-   TDatabasePDG *db   = TDatabasePDG::Instance();\r
-   TParticlePDG *part = db->GetParticle(pdg);\r
-   Double_t mass = part->Mass();\r
-   Bool_t valid;\r
-   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);\r
-\r
-   if (isRsnMini) {\r
-      AddPairOutputMiniRho(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsPair,suffix);\r
-   } else {\r
-      // this function is common and it is located in RsnConfig.C\r
-      // as ouptup AddPairOutputPhi from this macro will be taken\r
-      AddPair(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsEvent,cutsPair,suffix);\r
-   }\r
-}\r
-void AddPairOutputRho(AliRsnLoopPair *pair)\r
-{\r
-   Bool_t valid;\r
-   Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);\r
-\r
-   // axes\r
-   AliRsnValuePair *axisIM = new AliRsnValuePair("IM", AliRsnValuePair::kInvMass);\r
-   AliRsnValuePair *axisPt = new AliRsnValuePair("PT", AliRsnValuePair::kPt);\r
-   AliRsnValuePair *axisEta = new AliRsnValuePair("ETA", AliRsnValuePair::kEta);\r
-   axisIM     ->SetBins(180, 0.2, 2.0);\r
-//   axisIM     ->SetBins(1000, 0.9, 1.9);\r
-   axisPt     ->SetBins(100, 0.0, 12.0);\r
-   axisEta    ->SetBins(100, -2.0, 2.0);\r
-   axisY      ->SetBins(100,-2.0, 2.0);\r
-\r
-   // output: 2D histogram of inv. mass vs. pt\r
-   AliRsnListOutput *outPair = 0;\r
-   if (!isFullOutput) {\r
-      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoDefault);\r
-      outPair->AddValue(axisIM);\r
-   } else {\r
-      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoSparse);\r
-      outPair->AddValue(axisIM);\r
-      outPair->AddValue(axisPt);\r
-      outPair->AddValue(axisEta);\r
-      outPair->AddValue(axisY);\r
-   }\r
-   // add outputs to loop\r
-   pair->AddOutput(outPair);\r
-}\r
-\r
-void AddPairOutputMiniRho(AliAnalysisTaskSE *task, Bool_t isMC,Bool_t isMixing, AliPID::EParticleType pType1,Int_t listID1, AliPID::EParticleType pType2,Int_t listID2, Int_t pdgMother,Double_t massMother, AliRsnCutSet *cutsPair=0,TString suffix = "") {\r
-\r
-   Bool_t valid;\r
-   Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);\r
-   Int_t useMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);\r
-   Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);\r
-\r
-   AliRsnMiniAnalysisTask *taskRsnMini =  (AliRsnMiniAnalysisTask *)task;\r
-\r
-   /* invariant mass   */ Int_t imID   = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);\r
-   /* IM resolution    */ Int_t resID  = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMassDiff, kTRUE);\r
-   /* transv. momentum */ Int_t ptID   = taskRsnMini->CreateValue(AliRsnMiniValue::kPt, kFALSE);\r
-   /* centrality       */ Int_t centID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE);\r
-   /* eta              */ Int_t etaID = taskRsnMini->CreateValue(AliRsnMiniValue::kEta, kFALSE);\r
-   /* y                */ Int_t yID    = taskRsnMini->CreateValue(AliRsnMiniValue::kY, kFALSE);\r
-\r
-\r
-   // use an array for more compact writing, which are different on mixing and charges\r
-   // [0] = unlike\r
-   // [1] = mixing\r
-   // [2] = like ++\r
-   // [3] = like --\r
-   Bool_t  use     [5] = { 1      ,  useMixing      ,  1      ,  1      ,  isMC  };\r
-   TString name    [5] = {"Unlike", "Mixing", "LikePP", "LikeMM", "Trues"};\r
-   TString comp    [5] = {"PAIR"  , "MIX"   , "PAIR"  , "PAIR"  , "TRUE" };\r
-   Char_t  charge1 [5] = {'+'     , '+'     , '+'     , '-'     , '+'    };\r
-   Char_t  charge2 [5] = {'-'     , '-'     , '+'     , '-'     , '-'    };\r
-\r
-   // common definitions\r
-   TString outputType = "HIST";\r
-   if (isFullOutput) outputType = "SPARSE";\r
-\r
-   Int_t nIM   = 1000; Double_t minIM   = 0.2, maxIM =  1.2;\r
-   Int_t nEta   = 100; Double_t minEta   = -2.0, maxEta =  2.0;\r
-   Int_t nY    = 100;  Double_t minY    = -2.0,maxY =  2.0;\r
-//   Int_t nIM   = 1000; Double_t minIM   = 0.9, maxIM =  1.9;\r
-   Int_t nPt   = 100; Double_t minPt   = 0.0, maxPt = 12.0;\r
-   Int_t nCent = 100; Double_t minCent = 0.0, maxCent = 100.0;\r
-   Int_t nRes  = 200; Double_t maxRes  = 0.01;\r
-\r
-   // retrieve mass from PDG database\r
-   Int_t         pdg  = 113;\r
-   TDatabasePDG *db   = TDatabasePDG::Instance();\r
-   TParticlePDG *part = db->GetParticle(pdg);\r
-\r
-\r
-   Printf(suffix.Data());\r
-   // create standard outputs\r
-   for (Int_t i = 0; i < 5; i++) {\r
-      if (!use[i]) continue;\r
-      // create output\r
-      AliRsnMiniOutput *out = taskRsnMini->CreateOutput(Form("%s_%s", suffix.Data(),name[i].Data() ), outputType.Data(), comp[i].Data());\r
-      // selection settings\r
-      out->SetCutID(0, listID1);\r
-      out->SetCutID(1, listID1);\r
-      out->SetDaughter(0, AliRsnDaughter::kPion);\r
-      out->SetDaughter(1, AliRsnDaughter::kPion);\r
-      out->SetCharge(0, charge1[i]);\r
-      out->SetCharge(1, charge2[i]);\r
-      out->SetMotherPDG(pdg);\r
-      out->SetMotherMass(part->Mass());\r
-      // pair cuts\r
-      if (cutsPair) out->SetPairCuts(cutsPair);\r
-      // axis X: invmass\r
-      out->AddAxis(imID, nIM, minIM, maxIM);\r
-\r
-      if (isFullOutput) {\r
-         // axis Y: transverse momentum\r
-         out->AddAxis(ptID, nPt, minPt, maxPt);\r
-         out->AddAxis(etaID, nEta, minEta, maxEta);\r
-         out->AddAxis(yID, nY, minY, maxY);\r
-\r
-         // axis Z: centrality\r
-         if (collisionType==1) out->AddAxis(centID, nCent, minCent, maxCent);\r
-      }\r
-   }\r
-\r
-   // add output for resolution\r
-   if (isMC) {\r
-      AliRsnMiniOutput *outRes = taskRsnMini->CreateOutput(Form("rho_Res%s", suffix.Data()), outputType.Data(), "TRUE");\r
-      // selection settings\r
-      outRes->SetCutID(0, listID1);\r
-      outRes->SetCutID(1, listID1);\r
-      outRes->SetDaughter(0, AliRsnDaughter::kPion);\r
-      outRes->SetDaughter(1, AliRsnDaughter::kPion);\r
-      outRes->SetCharge(0, '+');\r
-      outRes->SetCharge(1, '-');\r
-      outRes->SetMotherPDG(pdg);\r
-      outRes->SetMotherMass(part->Mass());\r
-      // pair cuts\r
-      if (cutsPair) outRes->SetPairCuts(cutsPair);\r
-      // axis X: resolution\r
-      outRes->AddAxis(resID, nRes, -maxRes, maxRes);\r
-\r
-      if (isFullOutput) {\r
-         // axis Y: transverse momentum\r
-         outRes->AddAxis(ptID, nPt, minPt, maxPt);\r
-         outRes->AddAxis(etaID, nEta, minEta, maxEta);\r
-         // axis Z: centrality\r
-         if (collisionType==1) outRes->AddAxis(centID, nCent, minCent, maxCent);\r
-      }\r
-   }\r
-\r
-   //\r
-   // -- Create output for MC generated ------------------------------------------------------------\r
-   //\r
-\r
-   if (isMC) {\r
-      // create ouput\r
-      AliRsnMiniOutput *outMC = taskRsnMini->CreateOutput(Form("rho_MCGen%s", suffix.Data()), outputType.Data(), "MOTHER");\r
-      // selection settings\r
-      outMC->SetDaughter(0, AliRsnDaughter::kPion);\r
-      outMC->SetDaughter(1, AliRsnDaughter::kPion);\r
-      outMC->SetMotherPDG(pdg);\r
-      outMC->SetMotherMass(part->Mass());\r
-      // pair cuts\r
-      if (cutsPair) outMC->SetPairCuts(cutsPair);\r
-      // axis X: invmass\r
-      outMC->AddAxis(imID, nIM, minIM, maxIM);\r
-      if (isFullOutput) {\r
-         // axis Y: transverse momentum\r
-         outMC->AddAxis(ptID, nPt, minPt, maxPt);\r
-         outMC->AddAxis(etaID, nEta, minEta, maxEta);\r
-         outRes->AddAxis(yID, nY, minY, maxY);\r
-         // axis Z: centrality\r
-         if (collisionType==1) outMC->AddAxis(centID, nCent, minCent, maxCent);\r
-      }\r
-   }\r
-\r
-\r
-}\r
+#ifndef __CINT__
+#include <AliRsnValuePair.h>
+#endif
+
+void AddRsnPairsRho(AliAnalysisTaskSE *task,
+                    Bool_t isMC,
+                    Bool_t isMixing,
+                    AliPID::EParticleType pType1,
+                    Int_t listID1,
+                    AliPID::EParticleType pType2,
+                    Int_t listID2,
+                    AliRsnCutSet *cutsEvent=0,
+                    AliRsnCutSet *cutsPair=0,
+                    TString suffix = "") {
+
+   Printf("id1=%d id2=%d",listID1,listID2);
+
+   // retrieve mass from PDG database
+
+   // pdg rho = 133
+   // pdg omega = 223
+   // pdg eta = 221
+   // pdg eta' = 331
+   // pdg kshort = 310
+
+   Int_t         pdg  = 113;
+   TDatabasePDG *db   = TDatabasePDG::Instance();
+   TParticlePDG *part = db->GetParticle(pdg);
+   Double_t mass = part->Mass();
+   Bool_t valid;
+   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
+
+   if (isRsnMini) {
+      AddPairOutputMiniRho(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsPair,suffix);
+   } else {
+      // this function is common and it is located in RsnConfig.C
+      // as ouptup AddPairOutputPhi from this macro will be taken
+      AddPair(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsEvent,cutsPair,suffix);
+   }
+}
+void AddPairOutputRho(AliRsnLoopPair *pair)
+{
+   Bool_t valid;
+   Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);
+
+   // axes
+   AliRsnValuePair *axisIM = new AliRsnValuePair("IM", AliRsnValuePair::kInvMass);
+   AliRsnValuePair *axisPt = new AliRsnValuePair("PT", AliRsnValuePair::kPt);
+   AliRsnValuePair *axisEta = new AliRsnValuePair("ETA", AliRsnValuePair::kEta);
+   axisIM     ->SetBins(180, 0.2, 2.0);
+//   axisIM     ->SetBins(1000, 0.9, 1.9);
+   axisPt     ->SetBins(100, 0.0, 12.0);
+   axisEta    ->SetBins(100, -2.0, 2.0);
+   axisY      ->SetBins(100,-2.0, 2.0);
+
+   // output: 2D histogram of inv. mass vs. pt
+   AliRsnListOutput *outPair = 0;
+   if (!isFullOutput) {
+      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoDefault);
+      outPair->AddValue(axisIM);
+   } else {
+      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoSparse);
+      outPair->AddValue(axisIM);
+      outPair->AddValue(axisPt);
+      outPair->AddValue(axisEta);
+      outPair->AddValue(axisY);
+   }
+   // add outputs to loop
+   pair->AddOutput(outPair);
+}
+
+void AddPairOutputMiniRho(AliAnalysisTaskSE *task, Bool_t isMC,Bool_t isMixing, AliPID::EParticleType pType1,Int_t listID1, AliPID::EParticleType pType2,Int_t listID2, Int_t pdgMother,Double_t massMother, AliRsnCutSet *cutsPair=0,TString suffix = "") {
+
+   Bool_t valid;
+   Int_t isFullOutput = AliRsnTrainManager::GetGlobalInt("RsnOutputFull",valid);
+   Int_t useMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);
+   Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
+
+   AliRsnMiniAnalysisTask *taskRsnMini =  (AliRsnMiniAnalysisTask *)task;
+
+   /* invariant mass   */ Int_t imID   = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
+   /* IM resolution    */ Int_t resID  = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMassDiff, kTRUE);
+   /* transv. momentum */ Int_t ptID   = taskRsnMini->CreateValue(AliRsnMiniValue::kPt, kFALSE);
+   /* centrality       */ Int_t centID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE);
+   /* eta              */ Int_t etaID = taskRsnMini->CreateValue(AliRsnMiniValue::kEta, kFALSE);
+   /* y                */ Int_t yID    = taskRsnMini->CreateValue(AliRsnMiniValue::kY, kFALSE);
+
+
+   // use an array for more compact writing, which are different on mixing and charges
+   // [0] = unlike
+   // [1] = mixing
+   // [2] = like ++
+   // [3] = like --
+   Bool_t  use     [5] = { 1      ,  useMixing      ,  1      ,  1      ,  isMC  };
+   TString name    [5] = {"Unlike", "Mixing", "LikePP", "LikeMM", "Trues"};
+   TString comp    [5] = {"PAIR"  , "MIX"   , "PAIR"  , "PAIR"  , "TRUE" };
+   Char_t  charge1 [5] = {'+'     , '+'     , '+'     , '-'     , '+'    };
+   Char_t  charge2 [5] = {'-'     , '-'     , '+'     , '-'     , '-'    };
+
+   // common definitions
+   TString outputType = "HIST";
+   if (isFullOutput) outputType = "SPARSE";
+
+   Int_t nIM   = 1000; Double_t minIM   = 0.2, maxIM =  1.2;
+   Int_t nEta   = 100; Double_t minEta   = -2.0, maxEta =  2.0;
+   Int_t nY    = 100;  Double_t minY    = -2.0,maxY =  2.0;
+//   Int_t nIM   = 1000; Double_t minIM   = 0.9, maxIM =  1.9;
+   Int_t nPt   = 100; Double_t minPt   = 0.0, maxPt = 12.0;
+   Int_t nCent = 100; Double_t minCent = 0.0, maxCent = 100.0;
+   Int_t nRes  = 200; Double_t maxRes  = 0.01;
+
+   // retrieve mass from PDG database
+   Int_t         pdg  = 113;
+   TDatabasePDG *db   = TDatabasePDG::Instance();
+   TParticlePDG *part = db->GetParticle(pdg);
+
+
+   Printf(suffix.Data());
+   // create standard outputs
+   for (Int_t i = 0; i < 5; i++) {
+      if (!use[i]) continue;
+      // create output
+      AliRsnMiniOutput *out = taskRsnMini->CreateOutput(Form("%s_%s", suffix.Data(),name[i].Data() ), outputType.Data(), comp[i].Data());
+      // selection settings
+      out->SetCutID(0, listID1);
+      out->SetCutID(1, listID1);
+      out->SetDaughter(0, AliRsnDaughter::kPion);
+      out->SetDaughter(1, AliRsnDaughter::kPion);
+      out->SetCharge(0, charge1[i]);
+      out->SetCharge(1, charge2[i]);
+      out->SetMotherPDG(pdg);
+      out->SetMotherMass(part->Mass());
+      // pair cuts
+      if (cutsPair) out->SetPairCuts(cutsPair);
+      // axis X: invmass
+      out->AddAxis(imID, nIM, minIM, maxIM);
+
+      if (isFullOutput) {
+         // axis Y: transverse momentum
+         out->AddAxis(ptID, nPt, minPt, maxPt);
+         out->AddAxis(etaID, nEta, minEta, maxEta);
+         out->AddAxis(yID, nY, minY, maxY);
+
+         // axis Z: centrality
+         if (collisionType==1) out->AddAxis(centID, nCent, minCent, maxCent);
+      }
+   }
+
+   // add output for resolution
+   if (isMC) {
+      AliRsnMiniOutput *outRes = taskRsnMini->CreateOutput(Form("rho_Res%s", suffix.Data()), outputType.Data(), "TRUE");
+      // selection settings
+      outRes->SetCutID(0, listID1);
+      outRes->SetCutID(1, listID1);
+      outRes->SetDaughter(0, AliRsnDaughter::kPion);
+      outRes->SetDaughter(1, AliRsnDaughter::kPion);
+      outRes->SetCharge(0, '+');
+      outRes->SetCharge(1, '-');
+      outRes->SetMotherPDG(pdg);
+      outRes->SetMotherMass(part->Mass());
+      // pair cuts
+      if (cutsPair) outRes->SetPairCuts(cutsPair);
+      // axis X: resolution
+      outRes->AddAxis(resID, nRes, -maxRes, maxRes);
+
+      if (isFullOutput) {
+         // axis Y: transverse momentum
+         outRes->AddAxis(ptID, nPt, minPt, maxPt);
+         outRes->AddAxis(etaID, nEta, minEta, maxEta);
+         // axis Z: centrality
+         if (collisionType==1) outRes->AddAxis(centID, nCent, minCent, maxCent);
+      }
+   }
+
+   //
+   // -- Create output for MC generated ------------------------------------------------------------
+   //
+
+   if (isMC) {
+      // create ouput
+      AliRsnMiniOutput *outMC = taskRsnMini->CreateOutput(Form("rho_MCGen%s", suffix.Data()), outputType.Data(), "MOTHER");
+      // selection settings
+      outMC->SetDaughter(0, AliRsnDaughter::kPion);
+      outMC->SetDaughter(1, AliRsnDaughter::kPion);
+      outMC->SetMotherPDG(pdg);
+      outMC->SetMotherMass(part->Mass());
+      // pair cuts
+      if (cutsPair) outMC->SetPairCuts(cutsPair);
+      // axis X: invmass
+      outMC->AddAxis(imID, nIM, minIM, maxIM);
+      if (isFullOutput) {
+         // axis Y: transverse momentum
+         outMC->AddAxis(ptID, nPt, minPt, maxPt);
+         outMC->AddAxis(etaID, nEta, minEta, maxEta);
+         outRes->AddAxis(yID, nY, minY, maxY);
+         // axis Z: centrality
+         if (collisionType==1) outMC->AddAxis(centID, nCent, minCent, maxCent);
+      }
+   }
+
+
+}
index 793e2bbbaba1a467392eefaf61961512cd3dd07e..39ba357e08a07f889bb8e81b4c2ad4e02c6f988c 100644 (file)
@@ -380,7 +380,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    // kTOFnsigmaK
    AliRsnValueDaughter *axisTPCnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTPCnsigmaK);
-   axisTPCnsigmaK->SetBins(1001,-100,100);
+   axisTPCnsigmaK->SetBins(1000,-100,100);
 
    // output: 2D histogram of TPC signal vs. TPC momentum
    AliRsnListOutput *outMonitorTPCnsigmaK = new AliRsnListOutput("TPC_nsigma", AliRsnListOutput::kHistoDefault);
@@ -393,7 +393,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    // kTPCnsigmaPi
    AliRsnValueDaughter *axisTPCnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTPCnsigmaPi);
-   axisTPCnsigmaPi->SetBins(1001,-100,100);
+   axisTPCnsigmaPi->SetBins(1000,-100,100);
 
    // output: 2D histogram of TPC signal vs. TPC momentum
    AliRsnListOutput *outMonitorTPCnsigmaPi = new AliRsnListOutput("TPC_nsigma", AliRsnListOutput::kHistoDefault);
@@ -406,7 +406,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    // kTPCnsigmaP
    AliRsnValueDaughter *axisTPCnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTPCnsigmaP);
-   axisTPCnsigmaP->SetBins(1001,-100,100);
+   axisTPCnsigmaP->SetBins(1000,-100,100);
 
    // output: 2D histogram of TPC signal vs. TPC momentum
    AliRsnListOutput *outMonitorTPCnsigmaP = new AliRsnListOutput("TPC_nsigma", AliRsnListOutput::kHistoDefault);
@@ -422,7 +422,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
       // kTOFnsigmaK
       AliRsnValueDaughter *axisTOFnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTOFnsigmaK);
-      axisTOFnsigmaK->SetBins(1001,-100,100);
+      axisTOFnsigmaK->SetBins(1000,-100,100);
 
       // output: 2D histogram of TPC signal vs. TPC momentum
       AliRsnListOutput *outMonitorTOFnsigmaK = new AliRsnListOutput("TOF_nsigma", AliRsnListOutput::kHistoDefault);
@@ -435,7 +435,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
       // kTOFnsigmaPi
       AliRsnValueDaughter *axisTOFnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTOFnsigmaPi);
-      axisTOFnsigmaPi->SetBins(1001,-100,100);
+      axisTOFnsigmaPi->SetBins(1000,-100,100);
 
       // output: 2D histogram of TPC signal vs. TPC momentum
       AliRsnListOutput *outMonitorTOFnsigmaPi = new AliRsnListOutput("TOF_nsigma", AliRsnListOutput::kHistoDefault);
@@ -448,7 +448,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
       // kTOFnsigmaP
       AliRsnValueDaughter *axisTOFnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTOFnsigmaP);
-      axisTOFnsigmaP->SetBins(1001,-100,100);
+      axisTOFnsigmaP->SetBins(1000,-100,100);
 
       // output: 2D histogram of TPC signal vs. TPC momentum
       AliRsnListOutput *outMonitorTOFnsigmaP = new AliRsnListOutput("TOF_nsigma", AliRsnListOutput::kHistoDefault);
index e2c926444dd979d408e0dda1295d5c3cdbdcc727..73a6f54d3f502014aeb9bb70ee9ec2e100ee2726 100644 (file)
@@ -1,15 +1,3 @@
-#ifndef __CINT__
-#include <TSystem.h>
-#include <TROOT.h>
-#include <Rtypes.h>
-#include <TString.h>
-#include <TNamed.h>
-#include <TObjArray.h>
-#include <TObjString.h>
-#include <TList.h>
-#include <TStopwatch.h>
-#endif
-
 Bool_t RunALICE(TString anSrc = "grid",
                 TString anMode = "terminate",
                 TString input="aod" /*or "esd"*/,
@@ -18,14 +6,15 @@ Bool_t RunALICE(TString anSrc = "grid",
                 Long64_t nSkip = 0,
                 TString dsName="",
                 TString alirsnliteManagers ="AddAMRsn",
-                Bool_t useMultiHandler=kTRUE,
+                Bool_t useMultiHandler=kFALSE,
                 TString alirsnlitesrc ="$ALICE_ROOT",
                 TString alirsnlitetasks =""
-               ) {
+                ) {
 
    // some init work
    anSrc.ToLower(); anMode.ToLower(); input.ToLower(); inputMC.ToLower();
 
+//   TGrid::Connect("alien://");
    // loads libs and setup include paths
    if (LoadLibsBase(alirsnlitesrc)) return kFALSE;
 
@@ -58,8 +47,6 @@ Bool_t RunALICE(TString anSrc = "grid",
    // adds all tasks
    if (!AddAllManagers(listManagers, anSrc, anMode,input,inputMC)) { Printf("Error : AddAllManagers failed !!!"); return kFALSE;}
 
-   gSystem->ListLibraries("ls");
-
    TStopwatch timer;
    timer.Start();
    // runs analysis
@@ -68,6 +55,11 @@ Bool_t RunALICE(TString anSrc = "grid",
    timer.Stop();
    timer.Print();
    Printf("Working directory is %s ...", gSystem->WorkingDirectory());
+   TString outputDir =  gSystem->WorkingDirectory();
+   outputDir.ReplaceAll("alirsnlite","alirsnlite-out");
+   gSystem->Exec(TString::Format("mkdir -p %s",outputDir.Data()).Data());
+   gSystem->Exec(TString::Format("mv *.root %s/ > /dev/null 2>&1",outputDir.Data()).Data());
+//   gSystem->cd(outputDir.Data());
    Printf("Done OK");
    return kTRUE;
 
@@ -95,14 +87,19 @@ Int_t LoadLibsBase(TString alirsnlitesrc) {
 
 Bool_t CreateInputHandlers(TString input,TString inputMC,Bool_t useAODOut=kFALSE,Bool_t useMultiHandler=kTRUE) {
 
+       input.ToLower();
+       inputMC.ToLower();
+
    Bool_t useMC = !inputMC.CompareTo("mc");
 
+
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr) { Printf("Error [CreateInputHandlers] : mgr is null !!!"); return kFALSE; }
 
    if (useMultiHandler) {
       AliMultiInputEventHandler *inputHandler = new AliMultiInputEventHandler();
       if (!input.CompareTo("esd")) {
+       Printf("Adding ESD Input Handler ...");
          inputHandler->AddInputEventHandler(new AliESDInputHandler());
          if (useMC) inputHandler->AddInputEventHandler(new AliMCEventHandler());
       } else if (!input.CompareTo("aod")) {
@@ -117,7 +114,6 @@ Bool_t CreateInputHandlers(TString input,TString inputMC,Bool_t useAODOut=kFALSE
       } else if (!input.CompareTo("aod")) {
          mgr->SetInputEventHandler(new AliAODInputHandler());
       }
-      mgr->SetInputEventHandler(inputHandler);
    }
 
    if (useAODOut) {
@@ -127,7 +123,6 @@ Bool_t CreateInputHandlers(TString input,TString inputMC,Bool_t useAODOut=kFALSE
    }
 
    return kTRUE;
-
 }
 
 TList *CreateListOfManagersFromDir(TString listManagersNames="",TString dir="") {
index 3d46f07db99aecc5ffc1cd070e7862666b6c60c3..8200b57b71bc357589b3f85488ea82a9230d052e 100644 (file)
@@ -37,10 +37,10 @@ void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRs
   axisTPCchi2->SetBins(0.0, 10.0, 0.1);
   //DCA xy
   AliRsnValueDaughter *axisDCAxy = new AliRsnValueDaughter("DCAxy", AliRsnValueDaughter::kDCAXY);
-  axisDCAxy->SetBins(-10.0, 10.0, 0.1);
+  axisDCAxy->SetBins(-2.0, 2.0, 0.1);
   //DCA z
   AliRsnValueDaughter *axisDCAz = new AliRsnValueDaughter("DCAz", AliRsnValueDaughter::kDCAZ);
-  axisDCAxy->SetBins(-10.0, 10.0, 0.1);
+  axisDCAz->SetBins(-10.0, 10.0, 0.1);
 
   /* dEdx tpc */
   AliRsnValueDaughter *axisSigTPC = new AliRsnValueDaughter("sTPC", AliRsnValueDaughter::kTPCsignal);
@@ -109,7 +109,7 @@ void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRs
   if (mon) mon->Add(outMonitorDCAxy);
   if (lm) lm->AddOutput(outMonitorDCAxy);
 
-  // output: 2D histogram of DCAz vs pt
+  // output: 2D histogram of DCAz vs P
   AliRsnListOutput *outMonitorDCAz = new AliRsnListOutput("DCAzVsP", AliRsnListOutput::kHistoDefault);
   outMonitorDCAz->AddValue(axisMomP);
   outMonitorDCAz->AddValue(axisDCAz);