]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/ForwardAODConfig.C
New defaults and better explanations
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / ForwardAODConfig.C
CommitLineData
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 */
22void
23ForwardAODConfig(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//