]>
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 | |
1ff25622 | 33 | // --- Cuts -------------------------------------------------------- |
5bb5d1f6 | 34 | // Would like to use dynamic cast but CINT interprets that as a |
35 | // static cast - sigh! | |
1ff25622 | 36 | Bool_t mc = (task->IsA()==AliForwardMCMultiplicityTask::Class()); |
57522224 | 37 | // Double_t nXi = 2; |
38 | // Bool_t includeSigma = false; //true; | |
5934a3e3 | 39 | // Sharing cut |
57522224 | 40 | AliFMDMultCuts cSharingLow; |
1bd766f2 | 41 | Double_t factor = 1.; |
57522224 | 42 | cSharingLow.SetMultCuts(0.3, 0.3, 0.3, 0.3, 0.3); |
43 | // Sharing cut | |
44 | AliFMDMultCuts cSharingHigh; | |
45 | cSharingHigh.SetMultCuts(-1); | |
bfab35d9 | 46 | cSharingHigh.SetNXi(0); // Was 2 |
57522224 | 47 | cSharingHigh.SetIncludeSigma(false); |
bc31b177 | 48 | cSharingHigh.SetMPVFraction(0.6); |
5934a3e3 | 49 | // Density cut |
1bd766f2 | 50 | AliFMDMultCuts cDensity; |
8449e3e0 | 51 | // cDensity.SetMultCuts(0.3, 0.3, 0.3, 0.3, 0.3); |
52 | cDensity.SetMultCuts(-1); | |
bfab35d9 | 53 | cDensity.SetMPVFraction(0.6); // Was .7 |
1bd766f2 | 54 | |
e1f47419 | 55 | // --- Event inspector --------------------------------------------- |
9d05ffeb | 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); | |
e6463868 | 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 | |
66cf95f2 | 66 | task->GetEventInspector().SetUseV0AndForNSD(false); |
e6463868 | 67 | // Use primary vertex selection from 1st physics WG |
5934a3e3 | 68 | task->GetEventInspector().SetUseFirstPhysicsVtx(false); |
66cf95f2 | 69 | // Use satellite collisions |
5934a3e3 | 70 | task->GetEventInspector().SetUseDisplacedVertices(false); |
71 | // Which centrality estimator to use | |
72 | task->GetEventInspector().SetCentralityMethod("V0M"); | |
e1f47419 | 73 | |
74 | // --- Sharing filter ---------------------------------------------- | |
428cd802 | 75 | // If the following is uncommented, then the merging of shared |
76 | // signals is disabled completely | |
77 | // task->GetSharingFilter().SetDisableMerging(true); | |
5bb5d1f6 | 78 | // Enable use of angle corrected signals in the algorithm |
79 | task->GetSharingFilter().SetUseAngleCorrectedSignals(true); | |
1bd766f2 | 80 | // Disable use of angle corrected signals in the algorithm |
f7cfc454 | 81 | task->GetSharingFilter().SetZeroSharedHitsBelowThreshold(false); |
e6463868 | 82 | // Whether to use simple merging algorithm |
b7ab8a2c | 83 | task->GetSharingFilter().SetUseSimpleSharing(true); |
e6463868 | 84 | // Whether to allow for 3 strip hits |
bfab35d9 | 85 | task->GetSharingFilter().SetAllow3Strips(!mc); |
e6463868 | 86 | // Do not cut fixed/hard on multiplicity |
57522224 | 87 | // task->GetSharingFilter().GetHCuts().SetMultCuts(-1); |
1bd766f2 | 88 | // Set the number of xi's (width of landau peak) to stop at |
57522224 | 89 | // task->GetSharingFilter().GetHCuts().SetNXi(nXi); |
1bd766f2 | 90 | // Set whether or not to include sigma in cut |
57522224 | 91 | // task->GetSharingFilter().GetHCuts().SetIncludeSigma(includeSigma); |
92 | // Set upper sharing cut | |
93 | task->GetSharingFilter().SetHCuts(cSharingHigh); | |
1bd766f2 | 94 | // Enable use of angle corrected signals in the algorithm |
57522224 | 95 | task->GetSharingFilter().SetLCuts(cSharingLow); |
8449e3e0 | 96 | // If true, consider AliESDFMD::kInvalidMult as a zero signal. This |
97 | // has the unfortunate side effect, that we cannot use the | |
98 | // on-the-fly calculation of the phi acceptance. | |
99 | // | |
100 | // *IMPORTANT* | |
101 | // | |
102 | // Before revision 43711 of AliFMDReconstructor, all strips with no | |
103 | // signal where set to kInvalidMult. From revision 43711 (Release | |
104 | // 4-19-Rev-09) empty strips that are not marked as bad have a | |
105 | // signal of 0 (zero). That means, that for any reconstruction done | |
106 | // with releases prior to 4-19-Rev-09 this flag _must_ be defined as | |
107 | // true. | |
108 | // | |
109 | // The unfortunate side effect mentioned above is especially cruel | |
110 | // in this case, since we would benefit a lot from this setting for | |
111 | // that data. However, one can add dead strips here using | |
112 | // AliFMDSharingFilter::AddDeadStrip or | |
113 | // AliFMDSharingFilter::AddDeadRegion to remedy the situation, since | |
114 | // strips added explicitly here are always ignored. In the future, | |
115 | // the acceptance maker script should generate the list | |
116 | // automaticallu. | |
117 | // | |
118 | // LHC10c-900Gev is effected up-to and including pass3 | |
119 | // LHC10c-7TeV is effected up-to and including pass2 | |
120 | // LHC10c-CPass0 should be OK, but has limited statistics | |
121 | // LHC10c_11a_FMD should be OK, but has few runs | |
bfab35d9 | 122 | task->GetSharingFilter().SetInvalidIsEmpty(false); |
5934a3e3 | 123 | // Dead region in FMD2i |
124 | task->GetSharingFilter().AddDeadRegion(2, 'I', 16, 17, 256, 511); | |
bfab35d9 | 125 | // One can add extra dead strips from a script like |
126 | // | |
127 | // void deadstrips(AliFMDSharingFilter* filter) | |
128 | // { | |
129 | // filter->AddDead(...); | |
130 | // // ... and so on | |
131 | // } | |
132 | // | |
133 | // and then do here | |
134 | // | |
135 | // task->GetSharingFilter().AddDead("deadstrips.C"); | |
1bd766f2 | 136 | |
9b2f2e39 | 137 | // --- Density calculator ------------------------------------------ |
9d05ffeb | 138 | // Set the maximum number of particle to try to reconstruct |
5bb5d1f6 | 139 | task->GetDensityCalculator().SetMaxParticles(10); |
9d05ffeb | 140 | // Wet whether to use poisson statistics to estimate N_ch |
37079f20 | 141 | task->GetDensityCalculator().SetUsePoisson(true); |
5bb5d1f6 | 142 | // Set whether or not to include sigma in cut |
1bd766f2 | 143 | task->GetDensityCalculator().SetCuts(cDensity); |
e6463868 | 144 | // Set lumping (nEta,nPhi) |
145 | task->GetDensityCalculator().SetLumping(32,4); | |
1ff25622 | 146 | // Recalculate phi taking (x,y) offset of IP into account |
147 | task->GetDensityCalculator().SetRecalculatePhi(true); | |
81775aba | 148 | // Least acceptable quality of ELoss fits |
149 | task->GetDensityCalculator().SetMinQuality(8); | |
56236b95 | 150 | // Set whether or not to use the phi acceptance |
151 | // AliFMDDensityCalculator::kPhiNoCorrect | |
152 | // AliFMDDensityCalculator::kPhiCorrectNch | |
153 | // AliFMDDensityCalculator::kPhiCorrectELoss | |
154 | task->GetDensityCalculator() | |
155 | .SetUsePhiAcceptance(AliFMDDensityCalculator::kPhiCorrectNch); | |
e1f47419 | 156 | |
157 | // --- Corrector --------------------------------------------------- | |
9d05ffeb | 158 | // Whether to use the secondary map correction |
159 | task->GetCorrections().SetUseSecondaryMap(true); | |
bfab35d9 | 160 | // Whether to use the vertex bias correction (deprecated) |
9d05ffeb | 161 | task->GetCorrections().SetUseVertexBias(false); |
bfab35d9 | 162 | // Whether to use the acceptance correction from dead-strips (deprecated) |
5934a3e3 | 163 | task->GetCorrections().SetUseAcceptance(false); |
bfab35d9 | 164 | // Whether to use the merging efficiency correction (deprecated) |
9d05ffeb | 165 | task->GetCorrections().SetUseMergingEfficiency(false); |
e1f47419 | 166 | |
167 | // --- Histogram Collector ----------------------------------------- | |
9d05ffeb | 168 | // Set the number of extra bins (beyond the secondary map border) |
169 | task->GetHistCollector().SetNCutBins(2); | |
170 | // Set the correction cut, that is, when bins in the secondary map | |
171 | // is smaller than this, they are considered empty | |
172 | task->GetHistCollector().SetCorrectionCut(0.5); | |
e1f47419 | 173 | // How to calculate the value of overlapping bins. |
174 | // Possible values are | |
175 | // kStraightMean | |
176 | // kStraightMeanNoZero | |
177 | // kWeightedMean | |
178 | // kLeastError | |
bfab35d9 | 179 | // kSum |
180 | // kPreferInner | |
181 | // kPreferOuter | |
e1f47419 | 182 | task->GetHistCollector().SetMergeMethod(AliFMDHistCollector::kStraightMean); |
183 | // How to find the fiducial area of the secondary maps | |
184 | // Possible values are | |
185 | // kByCut Only bins larger that cut are trusted | |
186 | // kDistance Only bins that are more than half the size of it neighbors | |
187 | task->GetHistCollector().SetFiducialMethod(AliFMDHistCollector::kByCut); | |
8449e3e0 | 188 | // Additional diagnostics output - off by default |
0b7de667 | 189 | // |
190 | // If this option is enabled, then the summed per-vertex, per-ring | |
191 | // d2N/detadphi histograms will be stored in the output, as well as | |
192 | // copies of the secondary maps | |
8449e3e0 | 193 | // task->GetHistCollector().SetMakeBGHitMaps(true); |
0b7de667 | 194 | // |
195 | // If this option is enabled, then a 3D histogram will be made for | |
196 | // each ring, summing dN/deta for each centrality bin. | |
8449e3e0 | 197 | // task->GetHistCollector().SetMakeCentralitySums(true); |
e1f47419 | 198 | |
2b556440 | 199 | // --- Eventplane Finder ------------------------------------------- |
200 | task->GetEventPlaneFinder().SetUsePhiWeights(false); | |
201 | ||
8449e3e0 | 202 | // --- Ring AOD output --------------------------------------------- |
203 | // If set to true, then 5 additional branches will be created on the | |
204 | // output AOD - one for each FMD ring. The branches each contain a | |
205 | // TH2D object of the (primary) charged particle multiplicity per | |
206 | // (eta,phi)-bin in that event | |
207 | // task->SetStorePerRing(true); | |
208 | ||
9d05ffeb | 209 | // --- Set limits on fits the energy ------------------------------- |
81775aba | 210 | // DO NOT CHANGE THESE UNLESS YOU KNOW WHAT YOU ARE DOING |
9d05ffeb | 211 | // Maximum relative error on parameters |
81775aba | 212 | // AliFMDCorrELossFit::ELossFit::fgMaxRelError = .12; |
9d05ffeb | 213 | // Least weight to use |
81775aba | 214 | // AliFMDCorrELossFit::ELossFit::fgLeastWeight = 1e-5; |
9d05ffeb | 215 | // Maximum value of reduced chi^2 |
81775aba | 216 | // AliFMDCorrELossFit::ELossFit::fgMaxChi2nu = 10; |
8449e3e0 | 217 | |
218 | // --- Debug ------------------------------------------------------- | |
219 | // Set the overall debug level (1: some output, 3: a lot of output) | |
220 | // task->SetDebug(0); | |
221 | // Set the debug level of a single algorithm | |
222 | // task->GetSharingFilter().SetDebug(3); | |
9d05ffeb | 223 | } |
224 | // | |
225 | // EOF | |
226 | // |