]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
bugfix in AliRsnValue and some macros for running multiplicity-dependent analysis
authorpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 8 Nov 2010 12:23:10 +0000 (12:23 +0000)
committerpulvir <pulvir@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 8 Nov 2010 12:23:10 +0000 (12:23 +0000)
PWG2/RESONANCES/AliRsnValue.cxx
PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnAnalysisMult.C [new file with mode: 0644]
PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnEfficiency.C
PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/RsnConfig.C

index 8d3eee7f6d0e1460273ec99c0a257b0188a2d191..0a89c224eea8fdb4620778daa7ca26979126c7c1 100644 (file)
@@ -300,6 +300,7 @@ Bool_t AliRsnValue::Eval(AliRsnMother * const mother, AliRsnPairDef * const pair
         }
         fValue = (Double_t)fESDCuts.CountAcceptedTracks(esd);
       }
+      break;
     case kLeadingPt:
       if (!event) 
       {
@@ -372,6 +373,7 @@ Bool_t AliRsnValue::Eval(AliRsnDaughter * const daughter, AliRsnEvent * const ev
         }
         fValue = (Double_t)fESDCuts.CountAcceptedTracks(esd);
       }
+      break;
     case kLeadingPt:
       if (!event) 
       {
diff --git a/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnAnalysisMult.C b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnAnalysisMult.C
new file mode 100644 (file)
index 0000000..a739fcd
--- /dev/null
@@ -0,0 +1,86 @@
+//
+// This macro serves to add the RSN analysis task to the steering macro.
+//
+// Inputs:
+//   - dataLabel   = a string with informations about the type of data
+//                   which could be needed to be ported to the config macro
+//                   to set up some cuts
+//   - configMacro = macro which configures the analysis; it has *ALWAYS*
+//                   defined inside a function named 'RsnConfigTask()',
+//                   whatever the name of the macro itself, whose first two
+//                   arguments must have to be the task and the 'dataLabel' argument.
+//
+Bool_t AddRsnAnalysisMult
+(
+  const char *options,
+  const char *configs = "RsnConfigNoSA.C RsnConfigSA.C RsnConfigDipNoSA.C RsnConfigDipSA.C",
+  const char *path    = "$(ALICE_ROOT)/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi"
+)
+{
+  // retrieve analysis manager
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+
+  // interpret config string
+  TString strDataLabel(options);
+  Bool_t isSim = strDataLabel.Contains("sim");
+  Bool_t isMC  = strDataLabel.Contains("MC");
+  
+  // initialize cuts:
+  // always the same on primary vertex
+  // different on multiplicity
+  gROOT->LoadMacro("$(ALICE_ROOT)/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/ConfigESDCutsTPC.C");
+  Int_t                        mult[6] = {0, 5, 9, 14, 22, 1000000};
+  AliRsnCutPrimaryVertex      *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 10.0, 0, kFALSE);
+  AliRsnCutESDCutMultiplicity *cutMult[5];
+  for (Int_t i = 0; i < 5; i++)
+  {
+    cutMult[i] = new AliRsnCutESDCutMultiplicity(Form("cutMult_%d", i), mult[i] + 1, mult[i+1]);
+  }
+
+  // initialize tasks with all available slots, even if not all of them will be used:
+  // loop on all multiplicity bins
+  for (Int_t i = 0; i < 5; i++)
+  {
+    AliRsnAnalysisSE *task = new AliRsnAnalysisSE(Form("RsnAnalysis_%d", i));
+    task->SetZeroEventPercentWarning(100.0);
+    task->SelectCollisionCandidates();
+    if (isMC) task->SetMCOnly(kTRUE);
+
+    // if not MC kinematics, set cuts for events : primary vertex range and type
+    ConfigESDCutsTPC(cutMult[i]->GetCuts());
+    
+    task->GetEventCuts()->AddCut(cutVertex);
+    task->GetEventCuts()->AddCut(cutMult[i]);
+    task->GetEventCuts()->SetCutScheme(Form("cutVertex&%s", cutMult[i]->GetName()));
+
+    // add the task to manager
+    mgr->AddTask(task);
+
+    // load and execute configuration macroes
+    TString    sList(configs);
+    TObjArray *list = sList.Tokenize(" ");
+    Int_t nConfig = list->GetEntries();
+    Int_t iConfig = 0;
+    for (iConfig = 0; iConfig < nConfig; iConfig++)
+    {
+      TObjString *ostr = (TObjString*)list->At(iConfig);
+      cout << "***** Processing config macro '" << ostr->GetString().Data() << endl;
+      gROOT->ProcessLine(Form(".x %s/%s(\"%s\",\"%s\")", path, ostr->GetString().Data(), task->GetName(), options));
+    }
+
+    // connect input container according to source choice
+    mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
+
+    // create paths for the output in the common file
+    Char_t commonPath[500];
+    sprintf(commonPath, "%s", AliAnalysisManager::GetCommonFileName());
+
+    // create containers for output
+    AliAnalysisDataContainer *outputInfo = mgr->CreateContainer(Form("RsnInfo_%d", i), TList::Class(), AliAnalysisManager::kOutputContainer, commonPath);
+    AliAnalysisDataContainer *outputHist = mgr->CreateContainer(Form("RsnHist_%d", i), TList::Class(), AliAnalysisManager::kOutputContainer, commonPath);
+    mgr->ConnectOutput(task, 1, outputInfo);
+    mgr->ConnectOutput(task, 2, outputHist);
+  }
+
+  return kTRUE;
+}
index 59200e8429e674ff09bc17512f0bf11206a7d784..af9d82c1f841255067a471825e954c24980b7d8a 100644 (file)
@@ -97,10 +97,10 @@ Bool_t AddRsnEfficiency(const char *dataLabel)
     task[itask]->AddPairDef(pairPhi);
 
     // add the output histogram axis
-    //task[itask]->AddAxis(axisIM);
+    task[itask]->AddAxis(axisIM);
     task[itask]->AddAxis(axisPt);
-    //task[itask]->AddAxis(axisY);
-    //task[itask]->AddAxis(axisMult);
+    task[itask]->AddAxis(axisY);
+    task[itask]->AddAxis(axisMult);
     
     // add the cut only when working on ESD, not on MC only
     task[itask]->GetEventCuts()->AddCut(cutVertex);
index f76b5d15e1d8b18083bc9d548b294c4473b31e98..7ccb350e0483257db6a44f66a0d3b5bbc04e8782 100644 (file)
@@ -195,18 +195,17 @@ Bool_t RsnConfig
   Int_t    npt    = sizeof(pt  ) / sizeof(pt  [0]);
   Int_t    ny     = sizeof(y   ) / sizeof(y   [0]);
   Int_t    nmult  = sizeof(mult) / sizeof(mult[0]);
-  AliRsnValue *axisIM   = new AliRsnValue("IM"  , AliRsnValue::kPairInvMass     , 1000 , 0.9,  1.9);
+  AliRsnValue *axisIM   = new AliRsnValue("IM"  , AliRsnValue::kPairInvMass     , 500 , 0.9,  1.4);
   AliRsnValue *axisPt   = new AliRsnValue("PT"  , AliRsnValue::kPairPt          , npt  , pt);
   AliRsnValue *axisY    = new AliRsnValue("Y"   , AliRsnValue::kPairY           , ny   , y);
-  //AliRsnValue *axisMult = new AliRsnValue("Mult", AliRsnValue::kEventMultESDcuts, nmult, mult);
-  AliRsnValue *axisMult = new AliRsnValue("Mult", AliRsnValue::kEventMultESDcuts, 100, 0, 100);
+  AliRsnValue *axisMult = new AliRsnValue("Mult", AliRsnValue::kEventMultESDcuts, nmult, mult);
   ConfigESDCutsTPC(axisMult->GetCuts());
 
   // create function and add axes
   AliRsnFunction *fcnImPtY = new AliRsnFunction;
-  //fcnImPtY->AddAxis(axisIM);
-  //fcnImPtY->AddAxis(axisPt);
-  //fcnImPtY->AddAxis(axisY);
+  fcnImPtY->AddAxis(axisIM);
+  fcnImPtY->AddAxis(axisPt);
+  fcnImPtY->AddAxis(axisY);
   fcnImPtY->AddAxis(axisMult);
 
   // add functions to pairs
@@ -223,7 +222,7 @@ Bool_t RsnConfig
   task->GetAnalysisManager()->Add(pairPM);
   task->GetAnalysisManager()->Add(pairPP);
   task->GetAnalysisManager()->Add(pairMM);
-  if (isSim) task->GetAnalysisManager()->Add(truePM);
+  //if (isSim) task->GetAnalysisManager()->Add(truePM);
 
   return kTRUE;
 }