From: pulvir Date: Mon, 8 Nov 2010 12:23:10 +0000 (+0000) Subject: bugfix in AliRsnValue and some macros for running multiplicity-dependent analysis X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=0cba004ac3ead718aead42b996b606eaadd3dc79;p=u%2Fmrichter%2FAliRoot.git bugfix in AliRsnValue and some macros for running multiplicity-dependent analysis --- diff --git a/PWG2/RESONANCES/AliRsnValue.cxx b/PWG2/RESONANCES/AliRsnValue.cxx index 8d3eee7f6d0..0a89c224eea 100644 --- a/PWG2/RESONANCES/AliRsnValue.cxx +++ b/PWG2/RESONANCES/AliRsnValue.cxx @@ -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 index 00000000000..a739fcd0a78 --- /dev/null +++ b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnAnalysisMult.C @@ -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; +} diff --git a/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnEfficiency.C b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnEfficiency.C index 59200e8429e..af9d82c1f84 100644 --- a/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnEfficiency.C +++ b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/AddRsnEfficiency.C @@ -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); diff --git a/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/RsnConfig.C b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/RsnConfig.C index f76b5d15e1d..7ccb350e048 100644 --- a/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/RsnConfig.C +++ b/PWG2/RESONANCES/macros/train/LHC2010-7TeV-phi/RsnConfig.C @@ -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; }