]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AddTaskCentraldNdeta.C
Chiara O. implemented a way to bypass HIJING internal calculation
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AddTaskCentraldNdeta.C
1 /**
2  * @file   AddTaskCentraldNdeta.C
3  * @author Christian Holm Christensen <cholm@nbi.dk>
4  * @date   Fri Jan 28 10:22:26 2011
5  * 
6  * @brief Script to add a multiplicity task for the central
7  *        @f$\eta@f$ region
8  * 
9  * 
10  * @ingroup pwglf_forward_scripts_tasks
11  */
12 /** 
13  * Create the central @f$ dN/d\eta@f$ analysis task 
14  * 
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
22  * 
23  * @return Newly created and configured task
24  *
25  * @ingroup pwglf_forward_dndeta
26  */
27 AliAnalysisTask*
28 AddTaskCentraldNdeta(const char* trig      = "INEL", 
29                      Double_t    vzMin     = -10, 
30                      Double_t    vzMax     = +10, 
31                      Bool_t      useCent   = false,
32                      const char* scheme    = 0,
33                      Bool_t      cutEdges  = false,
34                      Double_t    trigEff   = 1, 
35                      Double_t    trigEff0  = 1,
36                      Bool_t      corrEmpty = true,
37                      const char* mcanalysisfilename = "none")
38 {
39   // --- Load libraries ----------------------------------------------
40   gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
41
42   // --- Analysis manager --------------------------------------------
43   AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
44
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");
49   if (aodInput == 2 &&
50       !AliForwardUtil::CheckForTask("AliCentralMultiplicityTask")) 
51     Fatal("","The relevant task wasn't added to the train");
52
53   // --- Make our object ---------------------------------------------
54   AliCentraldNdetaTask* task = new AliCentraldNdetaTask("Central");
55   task->SetMCFinalCorrFilename(mcanalysisfilename);
56   
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);
69   // Bit mask of 
70   // 
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 
76   // 
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
81   //     
82   //    kFull    = kEventLevel |  kBackground | kShape | kTriggerEfficiency
83   // 
84   // Default is kFull
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 .
91   if (useCent) {
92     Short_t bins[] = { 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
93     task->SetCentralityAxis(11, bins);
94   }
95   mgr->AddTask(task);
96
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());
106   
107   // --- connect input/output ----------------------------------------
108   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
109   mgr->ConnectOutput(task, 1, sums);
110   mgr->ConnectOutput(task, 2, output);
111   
112   return task;
113 }
114
115   
116 //________________________________________________________________________
117 //
118 // EOF
119 //