2 * @file ForwardAODConfig.C
3 * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
4 * @date Wed Mar 23 13:56:02 2011
8 * @ingroup pwglf_forward_scripts_tasks
12 * Configuration script for forward multiplicity task.
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
18 * @param task Task to configure
20 * @ingroup pwglf_forward_aod
23 ForwardAODConfig(AliForwardMultiplicityBase* task)
27 Info("ForwardAODConfig", "Setting up task %s (%p)", task->GetName(), task);
29 // --- General parameters ------------------------------------------
30 // Whether to enable low flux specific code
31 task->SetEnableLowFlux(kFALSE);
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());
38 // Bool_t includeSigma = false; //true;
40 AliFMDMultCuts cSharingLow;
42 cSharingLow.SetMultCuts(0.3, 0.3, 0.3, 0.3, 0.3);
44 AliFMDMultCuts cSharingHigh;
45 cSharingHigh.SetMultCuts(-1);
46 cSharingHigh.SetNXi(0); // Was 2
47 cSharingHigh.SetIncludeSigma(false);
48 cSharingHigh.SetMPVFaction(0.6);
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
55 // --- Event inspector ---------------------------------------------
56 // Set the number of SPD tracklets for which we consider the event a
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");
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.
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
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
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
125 // void deadstrips(AliFMDSharingFilter* filter)
127 // filter->AddDead(...);
133 // task->GetSharingFilter().AddDead("deadstrips.C");
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);
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);
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
172 // kStraightMeanNoZero
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);
188 // --- Eventplane Finder -------------------------------------------
189 task->GetEventPlaneFinder().SetUsePhiWeights(false);
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);
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;
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);