//
// Configuration script for monitor task with 2010 runs
//
// It contains a class definition where the cuts for each object
// are defined separately, functions are initialized and so on.
// This is used in the main function (named after the file name),
// which is called by the 'AddTask' function.
//
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TString.h"
#include "AliAnalysisManager.h"
#include "AliRsnValue.h"
#include "AliRsnFunction.h"
#include "AliRsnCutValue.h"
#include "AliRsnCutPrimaryVertex.h"
#include "AliRsnAnalysisTask.h"
#endif
Bool_t AddRsnEventComputations(Bool_t isMC, const char *options = "", const char *taskName = "RSNtask")
{
// ==================================================================================================================
// == PRELIMINARY OPERATIONS ========================================================================================
// ==================================================================================================================
// retrieve task from manager, using its name
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
AliRsnAnalysisTask *task = (AliRsnAnalysisTask*)mgr->GetTask(taskName);
if (!task) {
Error("RsnConfigMonitor", "Task not found");
return kFALSE;
}
TString opt(options);
opt.ToUpper();
opt.ReplaceAll(" ", "");
Bool_t central = opt.Contains("CENT");
Bool_t peripheral = opt.Contains("PERI");
// ==================================================================================================================
// == EVENT CUTS ====================================================================================================
// ==================================================================================================================
// event cuts are added directly to a cutSet in the task
// we create all and then add thos which are needed
// primary vertex:
// - 2nd argument --> |Vz| range
// - 3rd argument --> minimum required number of contributors
// - 4th argument --> tells if TPC stand-alone vertexes must be accepted
// we switch on the check for pileup
AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 10.0, 0, kFALSE);
cutVertex->SetCheckPileUp(kTRUE);
// centrality:
// - 2nd argument --> one of the centrality evaluation methods
// - 3rd, 4th argument --> centrality ranges in percentile (0-10 for central, 60-70 for peripheral)
AliRsnCutValue *cutCentrality = 0x0;
if (central)
cutCentrality = new AliRsnCutValue("cutCentral", AliRsnValue::kEventCentralityV0, 0.0, 10.0);
else if (peripheral)
cutCentrality = new AliRsnCutValue("cutPeripheral", AliRsnValue::kEventCentralityV0, 60.0, 70.0);
// primary vertex is always used
task->GetEventCuts()->AddCut(cutVertex);
// set cut scheme as AND of primary vertex and centrality, if initialized
if (cutCentrality) {
task->GetEventCuts()->AddCut(cutCentrality);
task->GetEventCuts()->SetCutScheme(Form("%s & %s", cutVertex->GetName(), cutCentrality->GetName()));
} else {
task->GetEventCuts()->SetCutScheme(cutVertex->GetName());
}
::Info("AddEventStuff", "Scheme for event cuts: %s", task->GetEventCuts()->GetCutScheme().Data());
// ==================================================================================================================
// == EVENT FUNCTIONS ===============================================================================================
// ==================================================================================================================
// we want to add an AliRsnFunction to compute multiplicity distribution
// it is needed in order to know how many events we have in each multiplicity bin
// axes
AliRsnValue *axisEvMultSPD = new AliRsnValue("MultSPD", AliRsnValue::kEventMultSPD, 0.0, 150.0, 1.0);
AliRsnValue *axisEvMultMC = new AliRsnValue("MultMC" , AliRsnValue::kEventMultMC , 0.0, 150.0, 1.0);
// create function and add axis
AliRsnFunction *fcnEv = new AliRsnFunction;
if (!fcnEv->AddAxis(axisEvMultSPD)) return kFALSE;
if (isMC && !fcnEv->AddAxis(axisEvMultMC)) return kFALSE;
// add functions to pairs
task->GetInfo()->AddEventFunction(fcnEv);
return kTRUE;
}
AddRsnEventComputations.C:1 AddRsnEventComputations.C:2 AddRsnEventComputations.C:3 AddRsnEventComputations.C:4 AddRsnEventComputations.C:5 AddRsnEventComputations.C:6 AddRsnEventComputations.C:7 AddRsnEventComputations.C:8 AddRsnEventComputations.C:9 AddRsnEventComputations.C:10 AddRsnEventComputations.C:11 AddRsnEventComputations.C:12 AddRsnEventComputations.C:13 AddRsnEventComputations.C:14 AddRsnEventComputations.C:15 AddRsnEventComputations.C:16 AddRsnEventComputations.C:17 AddRsnEventComputations.C:18 AddRsnEventComputations.C:19 AddRsnEventComputations.C:20 AddRsnEventComputations.C:21 AddRsnEventComputations.C:22 AddRsnEventComputations.C:23 AddRsnEventComputations.C:24 AddRsnEventComputations.C:25 AddRsnEventComputations.C:26 AddRsnEventComputations.C:27 AddRsnEventComputations.C:28 AddRsnEventComputations.C:29 AddRsnEventComputations.C:30 AddRsnEventComputations.C:31 AddRsnEventComputations.C:32 AddRsnEventComputations.C:33 AddRsnEventComputations.C:34 AddRsnEventComputations.C:35 AddRsnEventComputations.C:36 AddRsnEventComputations.C:37 AddRsnEventComputations.C:38 AddRsnEventComputations.C:39 AddRsnEventComputations.C:40 AddRsnEventComputations.C:41 AddRsnEventComputations.C:42 AddRsnEventComputations.C:43 AddRsnEventComputations.C:44 AddRsnEventComputations.C:45 AddRsnEventComputations.C:46 AddRsnEventComputations.C:47 AddRsnEventComputations.C:48 AddRsnEventComputations.C:49 AddRsnEventComputations.C:50 AddRsnEventComputations.C:51 AddRsnEventComputations.C:52 AddRsnEventComputations.C:53 AddRsnEventComputations.C:54 AddRsnEventComputations.C:55 AddRsnEventComputations.C:56 AddRsnEventComputations.C:57 AddRsnEventComputations.C:58 AddRsnEventComputations.C:59 AddRsnEventComputations.C:60 AddRsnEventComputations.C:61 AddRsnEventComputations.C:62 AddRsnEventComputations.C:63 AddRsnEventComputations.C:64 AddRsnEventComputations.C:65 AddRsnEventComputations.C:66 AddRsnEventComputations.C:67 AddRsnEventComputations.C:68 AddRsnEventComputations.C:69 AddRsnEventComputations.C:70 AddRsnEventComputations.C:71 AddRsnEventComputations.C:72 AddRsnEventComputations.C:73 AddRsnEventComputations.C:74 AddRsnEventComputations.C:75 AddRsnEventComputations.C:76 AddRsnEventComputations.C:77 AddRsnEventComputations.C:78 AddRsnEventComputations.C:79 AddRsnEventComputations.C:80 AddRsnEventComputations.C:81 AddRsnEventComputations.C:82 AddRsnEventComputations.C:83 AddRsnEventComputations.C:84 AddRsnEventComputations.C:85 AddRsnEventComputations.C:86 AddRsnEventComputations.C:87 AddRsnEventComputations.C:88 AddRsnEventComputations.C:89 AddRsnEventComputations.C:90 AddRsnEventComputations.C:91 AddRsnEventComputations.C:92 AddRsnEventComputations.C:93 AddRsnEventComputations.C:94 AddRsnEventComputations.C:95 AddRsnEventComputations.C:96 AddRsnEventComputations.C:97 AddRsnEventComputations.C:98 AddRsnEventComputations.C:99 AddRsnEventComputations.C:100