]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/ForwardAODConfig.C
This commit has two major parts:
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / ForwardAODConfig.C
1 /**
2  * @file   ForwardAODConfig.C
3  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
4  * @date   Wed Mar 23 13:56:02 2011
5  * 
6  * @brief  
7  * 
8  * @ingroup pwglf_forward_scripts_tasks
9  * 
10  */
11 /**
12  * Configuration script for forward multiplicity task.  
13  *
14  * You can copy this to your working directory or to some other
15  * directory up-front in your ROOT macro path, and edit it to suit your
16  * needs.
17  * 
18  * @param task  Task to configure 
19  *
20  * @ingroup pwglf_forward_aod
21  */
22 void
23 ForwardAODConfig(AliForwardMultiplicityBase* task)
24 {
25   if (!task) return;
26
27   Info("ForwardAODConfig", "Setting up task %s (%p)", task->GetName(), task);
28
29   // --- General parameters ------------------------------------------
30   // Whether to enable low flux specific code 
31   task->SetEnableLowFlux(kFALSE);
32
33   // --- Cuts --------------------------------------------------------
34   // Would like to use dynamic cast but CINT interprets that as a 
35   // static cast - sigh!
36   Bool_t   mc           = (task->IsA()==AliForwardMCMultiplicityTask::Class());
37   // Double_t nXi          = 2; 
38   // Bool_t   includeSigma = false; //true;
39   // Sharing cut
40   AliFMDMultCuts cSharingLow;
41   Double_t factor = 1.;
42   cSharingLow.SetMultCuts(0.3, 0.3, 0.3, 0.3, 0.3);
43   // Sharing cut
44   AliFMDMultCuts cSharingHigh;
45   cSharingHigh.SetMultCuts(-1);
46   cSharingHigh.SetNXi(0); // Was 2
47   cSharingHigh.SetIncludeSigma(false);
48   cSharingHigh.SetMPVFaction(0.6); 
49   // Density cut
50   AliFMDMultCuts cDensity;
51   // cDensity.SetMultCuts(0.3, 0.3, 0.3, 0.3, 0.3);
52   cDensity.SetMultCuts(-1);
53   cDensity.SetMPVFraction(0.6); // Was .7
54   
55   // --- Event inspector ---------------------------------------------
56   // Set the number of SPD tracklets for which we consider the event a
57   // low flux event
58   task->GetEventInspector().SetLowFluxCut(1000); 
59   // Set the maximum error on v_z [cm]
60   task->GetEventInspector().SetMaxVzErr(0.2);
61   // Least number of constributors to 2nd pile-up vertex
62   task->GetEventInspector().SetMinPileupContributors(3);
63   // Least distance from primary to 2nd pile-up vertex (cm)
64   task->GetEventInspector().SetMinPileupDistance(.8);
65   // V0-AND triggered events flagged as NSD 
66   task->GetEventInspector().SetUseV0AndForNSD(false);
67   // Use primary vertex selection from 1st physics WG
68   task->GetEventInspector().SetUseFirstPhysicsVtx(false);
69   // Use satellite collisions
70   task->GetEventInspector().SetUseDisplacedVertices(false);
71   // Which centrality estimator to use 
72   task->GetEventInspector().SetCentralityMethod("V0M");
73
74   // --- Sharing filter ----------------------------------------------
75   // Set the low cut used for sharing - overrides settings in eloss fits
76   // Enable use of angle corrected signals in the algorithm 
77   task->GetSharingFilter().SetUseAngleCorrectedSignals(true);
78   // Disable use of angle corrected signals in the algorithm 
79   task->GetSharingFilter().SetZeroSharedHitsBelowThreshold(false);
80   // Whether to use simple merging algorithm
81   task->GetSharingFilter().SetUseSimpleSharing(true);
82   // Whether to allow for 3 strip hits 
83   task->GetSharingFilter().SetAllow3Strips(!mc);
84   // Do not cut fixed/hard on multiplicity 
85   // task->GetSharingFilter().GetHCuts().SetMultCuts(-1);
86   // Set the number of xi's (width of landau peak) to stop at 
87   // task->GetSharingFilter().GetHCuts().SetNXi(nXi);
88   // Set whether or not to include sigma in cut
89   // task->GetSharingFilter().GetHCuts().SetIncludeSigma(includeSigma);
90   // Set upper sharing cut 
91   task->GetSharingFilter().SetHCuts(cSharingHigh);
92   // Enable use of angle corrected signals in the algorithm 
93   task->GetSharingFilter().SetLCuts(cSharingLow);
94   // If true, consider AliESDFMD::kInvalidMult as a zero signal.  This
95   // has the unfortunate side effect, that we cannot use the
96   // on-the-fly calculation of the phi acceptance.  
97   // 
98   // *IMPORTANT*
99   // 
100   // Before revision 43711 of AliFMDReconstructor, all strips with no
101   // signal where set to kInvalidMult.  From revision 43711 (Release
102   // 4-19-Rev-09) empty strips that are not marked as bad have a
103   // signal of 0 (zero).  That means, that for any reconstruction done
104   // with releases prior to 4-19-Rev-09 this flag _must_ be defined as
105   // true. 
106   // 
107   // The unfortunate side effect mentioned above is especially cruel
108   // in this case, since we would benefit a lot from this setting for
109   // that data.  However, one can add dead strips here using
110   // AliFMDSharingFilter::AddDeadStrip or
111   // AliFMDSharingFilter::AddDeadRegion to remedy the situation, since
112   // strips added explicitly here are always ignored.  In the future,
113   // the acceptance maker script should generate the list
114   // automaticallu.
115   //
116   // LHC10c-900Gev is effected up-to and including pass3 
117   // LHC10c-7TeV is effected up-to and including pass2
118   // LHC10c-CPass0 should be OK, but has limited statistics 
119   // LHC10c_11a_FMD should be OK, but has few runs  
120   task->GetSharingFilter().SetInvalidIsEmpty(false);
121   // Dead region in FMD2i
122   task->GetSharingFilter().AddDeadRegion(2, 'I', 16, 17, 256, 511);  
123   // One can add extra dead strips from a script like 
124   // 
125   //   void deadstrips(AliFMDSharingFilter* filter)
126   //   {
127   //     filter->AddDead(...);
128   //     // ... and so on 
129   //   }
130   //
131   // and then do here 
132   // 
133   // task->GetSharingFilter().AddDead("deadstrips.C");
134    
135   // --- Density calculator ------------------------------------------
136   // Set the maximum number of particle to try to reconstruct 
137   task->GetDensityCalculator().SetMaxParticles(10);
138   // Wet whether to use poisson statistics to estimate N_ch
139   task->GetDensityCalculator().SetUsePoisson(true);
140   // Set whether or not to include sigma in cut
141   task->GetDensityCalculator().SetCuts(cDensity);
142   // Set lumping (nEta,nPhi)
143   task->GetDensityCalculator().SetLumping(32,4);
144   // Recalculate phi taking (x,y) offset of IP into account 
145   task->GetDensityCalculator().SetRecalculatePhi(true);
146   // Set whether or not to use the phi acceptance
147   //   AliFMDDensityCalculator::kPhiNoCorrect
148   //   AliFMDDensityCalculator::kPhiCorrectNch
149   //   AliFMDDensityCalculator::kPhiCorrectELoss
150   task->GetDensityCalculator()
151     .SetUsePhiAcceptance(AliFMDDensityCalculator::kPhiCorrectNch);
152
153   // --- Corrector ---------------------------------------------------
154   // Whether to use the secondary map correction
155   task->GetCorrections().SetUseSecondaryMap(true);
156   // Whether to use the vertex bias correction (deprecated)
157   task->GetCorrections().SetUseVertexBias(false);
158   // Whether to use the acceptance correction from dead-strips (deprecated)
159   task->GetCorrections().SetUseAcceptance(false);
160   // Whether to use the merging efficiency correction  (deprecated)
161   task->GetCorrections().SetUseMergingEfficiency(false);
162
163   // --- Histogram Collector -----------------------------------------
164   // Set the number of extra bins (beyond the secondary map border) 
165   task->GetHistCollector().SetNCutBins(2);
166   // Set the correction cut, that is, when bins in the secondary map 
167   // is smaller than this, they are considered empty 
168   task->GetHistCollector().SetCorrectionCut(0.5);
169   // How to calculate the value of overlapping bins. 
170   // Possible values are 
171   //    kStraightMean 
172   //    kStraightMeanNoZero 
173   //    kWeightedMean 
174   //    kLeastError 
175   //    kSum
176   //    kPreferInner
177   //    kPreferOuter
178   task->GetHistCollector().SetMergeMethod(AliFMDHistCollector::kStraightMean);
179   // How to find the fiducial area of the secondary maps 
180   // Possible values are 
181   //   kByCut    Only bins larger that cut are trusted 
182   //   kDistance Only bins that are more than half the size of it neighbors
183   task->GetHistCollector().SetFiducialMethod(AliFMDHistCollector::kByCut);
184   // Additional diagnostics output - off by default
185   // task->GetHistCollector().SetMakeBGHitMaps(true);
186   // task->GetHistCollector().SetMakeCentralitySums(true);
187
188   // --- Eventplane Finder -------------------------------------------
189   task->GetEventPlaneFinder().SetUsePhiWeights(false);
190
191   // --- Ring AOD output ---------------------------------------------
192   // If set to true, then 5 additional branches will be created on the
193   // output AOD - one for each FMD ring.  The branches each contain a
194   // TH2D object of the (primary) charged particle multiplicity per
195   // (eta,phi)-bin in that event 
196   // task->SetStorePerRing(true);
197
198   // --- Set limits on fits the energy -------------------------------
199   // Maximum relative error on parameters 
200   AliFMDCorrELossFit::ELossFit::fgMaxRelError = .12;
201   // Least weight to use 
202   AliFMDCorrELossFit::ELossFit::fgLeastWeight = 1e-5;
203   // Maximum value of reduced chi^2 
204   AliFMDCorrELossFit::ELossFit::fgMaxChi2nu   = 10;
205
206   // --- Debug -------------------------------------------------------
207   // Set the overall debug level (1: some output, 3: a lot of output)
208   // task->SetDebug(0);
209   // Set the debug level of a single algorithm 
210   // task->GetSharingFilter().SetDebug(3);
211 }
212 //
213 // EOF
214 //