2 * @file AddTaskCentraldNdeta.C
3 * @author Christian Holm Christensen <cholm@nbi.dk>
4 * @date Fri Jan 28 10:22:26 2011
6 * @brief Script to add a multiplicity task for the central
10 * @ingroup pwglf_forward_scripts_tasks
13 * Create the central @f$ dN/d\eta@f$ analysis task
15 * @param trig Trigger to use
16 * @param vzMin Smallest @f$ v_z@f$
17 * @param vzMax Biggest @f$ v_z@f$
18 * @param useCent Whether to use the centrality or not
19 * @param scheme Normalisation scheme
20 * @param cutEdges Whether to cut edges when rebinning
21 * @param mcanalysisfilename Take final MC corrections from this - if present
23 * @return Newly created and configured task
25 * @ingroup pwglf_forward_dndeta
28 AddTaskCentraldNdeta(const char* trig = "INEL",
31 Bool_t useCent = false,
32 const char* scheme = 0,
33 Bool_t cutEdges = false,
35 Double_t trigEff0 = 1,
36 Bool_t corrEmpty = true,
37 const char* mcanalysisfilename = "none")
39 // --- Load libraries ----------------------------------------------
40 gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
42 // --- Analysis manager --------------------------------------------
43 AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
45 // --- Check that we have an AOD input handler ---------------------
46 UShort_t aodInput = 0;
47 if (!(aodInput = AliForwardUtil::CheckForAOD()))
48 Fatal("","Cannot proceed without and AOD handler");
50 !AliForwardUtil::CheckForTask("AliCentralMultiplicityTask"))
51 Fatal("","The relevant task wasn't added to the train");
53 // --- Make our object ---------------------------------------------
54 AliCentraldNdetaTask* task = new AliCentraldNdetaTask("Central");
55 task->SetMCFinalCorrFilename(mcanalysisfilename);
57 // Set the vertex range to use
58 task->SetVertexRange(vzMin, vzMax);
59 // Set the trigger mask to use (INEL,INEL>0,NSD)
60 task->SetTriggerMask(trig);
61 task->SetTriggerEff(trigEff); // 0.997535);
62 task->SetTriggerEff0(trigEff0);
63 // Whether to cut edges when re-binning
64 task->SetCutEdges(cutEdges);
65 // Whether to correct for empty bins when projecting
66 task->SetCorrEmpty(corrEmpty);
67 // Whether to use TH2::ProjectionX
68 task->SetUseROOTProjectX(false);
71 // kNone Normalise to accepted events
72 // kEventLevel Normalise to all events in selected range
73 // kBackground Also correct for background triggers
74 // kTriggerEfficiency Correct for trigger efficiency
75 // kShape Correct shape
77 // kNone and kEventLevel are mutually exclusive. If kEventLevel is
78 // not specified, then kNone is assumed. kBackground only makes
79 // sense with kEventLevel. Furthermore, there
80 // are some constants that encode the common cases
82 // kFull = kEventLevel | kBackground | kShape | kTriggerEfficiency
85 task->SetNormalizationScheme(AliBasedNdetaTask::kFull);
86 if (scheme) task->SetNormalizationScheme(scheme);
87 // Set the centrality bins to use. These are mutually exclusive.
88 // Note, that a bin specified as a-b, covers the interval from a,
89 // inclusive to b exclusive. An upper bound of 100 is treated
90 // especially, and the upper bound is inclusive in that case .
92 Short_t bins[] = { 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
93 task->SetCentralityAxis(11, bins);
97 // --- create containers for input/output --------------------------
98 AliAnalysisDataContainer *sums =
99 mgr->CreateContainer("CentralSums", TList::Class(),
100 AliAnalysisManager::kOutputContainer,
101 AliAnalysisManager::GetCommonFileName());
102 AliAnalysisDataContainer *output =
103 mgr->CreateContainer("CentralResults", TList::Class(),
104 AliAnalysisManager::kParamContainer,
105 AliAnalysisManager::GetCommonFileName());
107 // --- connect input/output ----------------------------------------
108 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
109 mgr->ConnectOutput(task, 1, sums);
110 mgr->ConnectOutput(task, 2, output);
116 //________________________________________________________________________