]>
Commit | Line | Data |
---|---|---|
ffca499d | 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 | * | |
bd6f5206 | 8 | * @ingroup pwglf_forward_scripts_tasks |
ffca499d | 9 | * |
10 | */ | |
9d05ffeb | 11 | /** |
12 | * Configuration script for forward multiplicity task. | |
13 | * | |
14 | * You can copy this to your working directory or to some other | |
e1f47419 | 15 | * directory up-front in your ROOT macro path, and edit it to suit your |
9d05ffeb | 16 | * needs. |
17 | * | |
290052e7 | 18 | * @param task Task to configure |
19 | * | |
bd6f5206 | 20 | * @ingroup pwglf_forward_aod |
9d05ffeb | 21 | */ |
22 | void | |
23 | ForwardAODConfig(AliForwardMultiplicityBase* task) | |
24 | { | |
25 | if (!task) return; | |
26 | ||
27 | Info("ForwardAODConfig", "Setting up task %s (%p)", task->GetName(), task); | |
e1f47419 | 28 | |
29 | // --- General parameters ------------------------------------------ | |
9d05ffeb | 30 | // Whether to enable low flux specific code |
31 | task->SetEnableLowFlux(kFALSE); | |
e1f47419 | 32 | |
344e07a5 | 33 | // --- Check for MC ------------------------------------------------ |
5bb5d1f6 | 34 | // Would like to use dynamic cast but CINT interprets that as a |
35 | // static cast - sigh! | |
344e07a5 | 36 | Bool_t mc = (task->IsA()==AliForwardMCMultiplicityTask::Class()); |
37 | ||
38 | // --- Cuts -------------------------------------------------------- | |
39 | // Note, the absolute lowest signal to consider - ever - | |
40 | // irrespective of MC or real data, is 0.15. Signals below this | |
41 | // will contain remenants of the pedestal (yes, the width of the | |
42 | // pedestal is small, but there are many _many_ channels with only | |
43 | // pedestal value in them, so the absolute number of high-value | |
44 | // pedestal signals is large - despite the low probablity). | |
45 | AliFMDMultCuts cSharingLow(AliFMDMultCuts::kFixed,0.15); | |
46 | AliFMDMultCuts cSharingHigh(AliFMDMultCuts::kMPVFraction,0.8,0.8,0.8,0.8,0.8); | |
47 | AliFMDMultCuts cDensity(AliFMDMultCuts::kMPVFraction,0.7); | |
1bd766f2 | 48 | |
e1f47419 | 49 | // --- Event inspector --------------------------------------------- |
9d05ffeb | 50 | // Set the number of SPD tracklets for which we consider the event a |
51 | // low flux event | |
52 | task->GetEventInspector().SetLowFluxCut(1000); | |
53 | // Set the maximum error on v_z [cm] | |
54 | task->GetEventInspector().SetMaxVzErr(0.2); | |
e6463868 | 55 | // Least number of constributors to 2nd pile-up vertex |
56 | task->GetEventInspector().SetMinPileupContributors(3); | |
57 | // Least distance from primary to 2nd pile-up vertex (cm) | |
58 | task->GetEventInspector().SetMinPileupDistance(.8); | |
59 | // V0-AND triggered events flagged as NSD | |
66cf95f2 | 60 | task->GetEventInspector().SetUseV0AndForNSD(false); |
e6463868 | 61 | // Use primary vertex selection from 1st physics WG |
5934a3e3 | 62 | task->GetEventInspector().SetUseFirstPhysicsVtx(false); |
66cf95f2 | 63 | // Use satellite collisions |
5934a3e3 | 64 | task->GetEventInspector().SetUseDisplacedVertices(false); |
65 | // Which centrality estimator to use | |
66 | task->GetEventInspector().SetCentralityMethod("V0M"); | |
e1f47419 | 67 | |
68 | // --- Sharing filter ---------------------------------------------- | |
344e07a5 | 69 | // If the following is set to true, then the merging of shared |
428cd802 | 70 | // signals is disabled completely |
344e07a5 | 71 | task->GetSharingFilter().SetDisableMerging(false); |
5bb5d1f6 | 72 | // Enable use of angle corrected signals in the algorithm |
73 | task->GetSharingFilter().SetUseAngleCorrectedSignals(true); | |
bdd49110 | 74 | // Ignore the ESD information when angle correcting. |
75 | // | |
76 | // *IMPORTANT* | |
77 | // | |
78 | // This is to counter a known issue with AliESDFMD with ClassDef | |
79 | // version < 4, where the angle correction flag is incorrectly set. | |
80 | // A fix is coming to AliESDFMD to handle it directly in the class. | |
81 | // Only set the flag below to true if you know it to be necessary for | |
82 | // your data set. | |
83 | task->GetSharingFilter().SetIgnoreESDWhenAngleCorrecting(false); | |
1bd766f2 | 84 | // Disable use of angle corrected signals in the algorithm |
f7cfc454 | 85 | task->GetSharingFilter().SetZeroSharedHitsBelowThreshold(false); |
e6463868 | 86 | // Whether to use simple merging algorithm |
b7ab8a2c | 87 | task->GetSharingFilter().SetUseSimpleSharing(true); |
344e07a5 | 88 | // Whether to allow for 3 strip hits - deprecated |
89 | task->GetSharingFilter().SetAllow3Strips(false); | |
57522224 | 90 | // Set upper sharing cut |
91 | task->GetSharingFilter().SetHCuts(cSharingHigh); | |
1bd766f2 | 92 | // Enable use of angle corrected signals in the algorithm |
57522224 | 93 | task->GetSharingFilter().SetLCuts(cSharingLow); |
8449e3e0 | 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 | |
bfab35d9 | 120 | task->GetSharingFilter().SetInvalidIsEmpty(false); |
5934a3e3 | 121 | // Dead region in FMD2i |
122 | task->GetSharingFilter().AddDeadRegion(2, 'I', 16, 17, 256, 511); | |
bfab35d9 | 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"); | |
1bd766f2 | 134 | |
9b2f2e39 | 135 | // --- Density calculator ------------------------------------------ |
9d05ffeb | 136 | // Set the maximum number of particle to try to reconstruct |
5bb5d1f6 | 137 | task->GetDensityCalculator().SetMaxParticles(10); |
9d05ffeb | 138 | // Wet whether to use poisson statistics to estimate N_ch |
37079f20 | 139 | task->GetDensityCalculator().SetUsePoisson(true); |
5bb5d1f6 | 140 | // Set whether or not to include sigma in cut |
1bd766f2 | 141 | task->GetDensityCalculator().SetCuts(cDensity); |
e6463868 | 142 | // Set lumping (nEta,nPhi) |
143 | task->GetDensityCalculator().SetLumping(32,4); | |
1ff25622 | 144 | // Recalculate phi taking (x,y) offset of IP into account |
145 | task->GetDensityCalculator().SetRecalculatePhi(true); | |
81775aba | 146 | // Least acceptable quality of ELoss fits |
147 | task->GetDensityCalculator().SetMinQuality(8); | |
77f97e3f | 148 | // Set the maximum ratio of outlier bins to the total number of bins |
67a4bb96 CHC |
149 | // task->GetDensityCalculator().SetMaxOutliers(.10); |
150 | task->GetDensityCalculator().SetMaxOutliers(1.0);//Disable filter | |
77f97e3f CHC |
151 | // Set the maximum relative diviation between N_ch from Eloss and Poisson |
152 | task->GetDensityCalculator().SetOutlierCut(0.5); | |
56236b95 | 153 | // Set whether or not to use the phi acceptance |
154 | // AliFMDDensityCalculator::kPhiNoCorrect | |
155 | // AliFMDDensityCalculator::kPhiCorrectNch | |
156 | // AliFMDDensityCalculator::kPhiCorrectELoss | |
157 | task->GetDensityCalculator() | |
158 | .SetUsePhiAcceptance(AliFMDDensityCalculator::kPhiCorrectNch); | |
e1f47419 | 159 | |
160 | // --- Corrector --------------------------------------------------- | |
9d05ffeb | 161 | // Whether to use the secondary map correction |
162 | task->GetCorrections().SetUseSecondaryMap(true); | |
bfab35d9 | 163 | // Whether to use the vertex bias correction (deprecated) |
9d05ffeb | 164 | task->GetCorrections().SetUseVertexBias(false); |
bfab35d9 | 165 | // Whether to use the acceptance correction from dead-strips (deprecated) |
5934a3e3 | 166 | task->GetCorrections().SetUseAcceptance(false); |
bfab35d9 | 167 | // Whether to use the merging efficiency correction (deprecated) |
9d05ffeb | 168 | task->GetCorrections().SetUseMergingEfficiency(false); |
e1f47419 | 169 | |
170 | // --- Histogram Collector ----------------------------------------- | |
9d05ffeb | 171 | // Set the number of extra bins (beyond the secondary map border) |
172 | task->GetHistCollector().SetNCutBins(2); | |
173 | // Set the correction cut, that is, when bins in the secondary map | |
174 | // is smaller than this, they are considered empty | |
175 | task->GetHistCollector().SetCorrectionCut(0.5); | |
e1f47419 | 176 | // How to calculate the value of overlapping bins. |
177 | // Possible values are | |
178 | // kStraightMean | |
179 | // kStraightMeanNoZero | |
180 | // kWeightedMean | |
181 | // kLeastError | |
bfab35d9 | 182 | // kSum |
183 | // kPreferInner | |
184 | // kPreferOuter | |
e1f47419 | 185 | task->GetHistCollector().SetMergeMethod(AliFMDHistCollector::kStraightMean); |
186 | // How to find the fiducial area of the secondary maps | |
187 | // Possible values are | |
188 | // kByCut Only bins larger that cut are trusted | |
189 | // kDistance Only bins that are more than half the size of it neighbors | |
190 | task->GetHistCollector().SetFiducialMethod(AliFMDHistCollector::kByCut); | |
8449e3e0 | 191 | // Additional diagnostics output - off by default |
0b7de667 | 192 | // |
193 | // If this option is enabled, then the summed per-vertex, per-ring | |
194 | // d2N/detadphi histograms will be stored in the output, as well as | |
195 | // copies of the secondary maps | |
344e07a5 | 196 | task->GetHistCollector().SetMakeBGHitMaps(false); |
0b7de667 | 197 | // |
198 | // If this option is enabled, then a 3D histogram will be made for | |
199 | // each ring, summing dN/deta for each centrality bin. | |
344e07a5 | 200 | task->GetHistCollector().SetMakeCentralitySums(false); |
e1f47419 | 201 | |
2b556440 | 202 | // --- Eventplane Finder ------------------------------------------- |
203 | task->GetEventPlaneFinder().SetUsePhiWeights(false); | |
204 | ||
8449e3e0 | 205 | // --- Ring AOD output --------------------------------------------- |
206 | // If set to true, then 5 additional branches will be created on the | |
207 | // output AOD - one for each FMD ring. The branches each contain a | |
208 | // TH2D object of the (primary) charged particle multiplicity per | |
209 | // (eta,phi)-bin in that event | |
344e07a5 | 210 | task->SetStorePerRing(false); |
8449e3e0 | 211 | |
9d05ffeb | 212 | // --- Set limits on fits the energy ------------------------------- |
81775aba | 213 | // DO NOT CHANGE THESE UNLESS YOU KNOW WHAT YOU ARE DOING |
9d05ffeb | 214 | // Maximum relative error on parameters |
81775aba | 215 | // AliFMDCorrELossFit::ELossFit::fgMaxRelError = .12; |
9d05ffeb | 216 | // Least weight to use |
81775aba | 217 | // AliFMDCorrELossFit::ELossFit::fgLeastWeight = 1e-5; |
9d05ffeb | 218 | // Maximum value of reduced chi^2 |
81775aba | 219 | // AliFMDCorrELossFit::ELossFit::fgMaxChi2nu = 10; |
8449e3e0 | 220 | |
221 | // --- Debug ------------------------------------------------------- | |
222 | // Set the overall debug level (1: some output, 3: a lot of output) | |
223 | // task->SetDebug(0); | |
224 | // Set the debug level of a single algorithm | |
225 | // task->GetSharingFilter().SetDebug(3); | |
9d05ffeb | 226 | } |
227 | // | |
228 | // EOF | |
229 | // |