--- /dev/null
+//
+// 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;
+}
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
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;
}