]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/analysis2/corrs/ExtractNG.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / corrs / ExtractNG.C
CommitLineData
33bf7658 1#ifndef __CINT__
2# include "AliFMDParameters.h"
3# include "AliFMDCorrNoiseGain.h"
4# include "AliForwardCorrectionManager.h"
5# include "AliForwardUtil.h"
6# include "AliCDBManager.h"
7# include "AliCDBEntry.h"
8# include "AliCDBStorage.h"
9# include "AliGRPObject.h"
10# include "AliMagF.h"
11# include "AliLog.h"
12# include <TSystem.h>
13# include <TROOT.h>
14# include <TError.h>
15# include <TString.h>
16#endif
17
18/**
19 * Do one one
20 *
21 * @param runNo Run number
22 * @param which Which one to do
23 */
24void
25ExtractForRun(Int_t runNo)
26{
27 // --- Figure out the year --------------------------------------
28 UShort_t year = 0;
29 if (runNo <= 99999) year = 2009;
30 else if (runNo <= 139667) year = 2010;
31 else if (runNo <= 170718) year = 2011;
32 else if (runNo <= 194306) year = 2012;
33 else if (runNo <= 197709) year = 2013;
34 if (year <= 0) {
35 Error("", "Couldn't deduce the year from the run number");
36 return;
37 }
38
39 // --- Connect to OCDB ---------------------------------------------
40 AliCDBManager* cdb = AliCDBManager::Instance();
41 cdb->SetRun(runNo);
42 cdb->SetDefaultStorageFromRun(runNo);
43
44#if 0
45 // --- Get the general run parameters ------------------------------
46 // AliLog::SetModuleDebugLevel("STEER", 3);
47 AliCDBId grpId("GRP/GRP/Data", runNo + 100, runNo - 100);
48 AliCDBEntry* grpE = cdb->GetDefaultStorage()->GetEntry(grpId);
49 if (!grpE) {
50 Warning("ExtractForRun", "No GRP entry found for run %d", runNo);
51 return;
52 }
53 AliGRPObject* grp = static_cast<AliGRPObject*>(grpE->GetObject());
54 if (!grp) {
55 Warning("ExtractForRun", "No GRP object found for run %d", runNo);
56 return;
57 }
58 Float_t beamE = grp->GetBeamEnergy();
59 TString beamT = grp->GetBeamType();
60#if 0
61 // This isn't really needed as the acceptance map is indifferent to
62 // the field settings.
63 Float_t l3cur = grp->GetL3Current(AliGRPObject::kMean);
64 Char_t l3pol = grp->GetL3Polarity();
65 Bool_t l3lhc = grp->IsPolarityConventionLHC();
66 Bool_t l3uni = grp->IsUniformBMap();
67 AliMagF* fldM =
68 AliMagF::CreateFieldMap(TMath::Abs(l3cur) * (l3pol ? -1:1), 0,
69 (l3lhc ? 0 : 1), l3uni, beamE, beamT.Data());
70 Float_t l3fld = fldM->SolenoidField();
71#endif
72 Printf("=== From GRP: Beam: E=%f T=%s", beamE, beamT.Data());
73 if (beamE > 14000) beamE = 450;
74 if (beamT.IsNull()) beamT = "pp";
75
76 UShort_t sys = AliForwardUtil::ParseCollisionSystem(beamT);
77 UShort_t sNN = AliForwardUtil::ParseCenterOfMassEnergy(sys, 2 * beamE);
78 Short_t fld = +999; // AliForwardUtil::ParseMagneticField(l3fld);
79 Printf("=== Run=%d, year=%d, sys=%d, sNN=%d, fld=%d",
80 runNo, year, sys, sNN, fld);
81#endif
82 UShort_t sys = +999;
83 UShort_t sNN = +999;
84 Short_t fld = +999;
85
86 // --- Get our parameters ------------------------------------------
87 AliFMDParameters* param = AliFMDParameters::Instance();
88 param->Init(true, AliFMDParameters::kPulseGain|AliFMDParameters::kPedestal);
89
90 // --- Get the object to store -------------------------------------
91 AliFMDCorrNoiseGain* ret = new AliFMDCorrNoiseGain();
92 Float_t konst = param->GetDACPerMIP();
93
94 // --- Loop over all strips ----------------------------------------
95 for (UShort_t d = 1; d <= 3; d++) {
96 UShort_t nQ = (d == 1 ? 1 : 2);
97 for (UShort_t q = 0; q < nQ; q++) {
98 Char_t r = (q == 0 ? 'I' : 'O');
99 UShort_t nS = (q == 0 ? 20 : 40);
100 UShort_t nT = (q == 0 ? 512 : 256);
101 for (UShort_t s = 0; s < nS; s++) {
102 for (UShort_t t = 0; t < nT; t++) {
103 Float_t noise = param->GetPedestalWidth(d,r,s,t);
104 Float_t gain = param->GetPulseGain(d,r,s,t);
105 Float_t corr = 0;
106 if (noise > .5 && gain > .5) corr = noise / (gain * konst);
107 if (corr > 1 || corr < 0) {
108 Warning("", "FMD%d%c[%2d,%3d] corr= %f (=%f/(%f*%f))",
109 d, r, s, t, corr, noise, gain, konst);
110 corr = 0;
111 }
112 ret->Set(d,r,s,t,corr);
113 }
114 }
115 }
116 }
117
118 // --- Write to a file ---------------------------------------------
119 Printf("=== Writing to disk");
120 AliForwardCorrectionManager& cm = AliForwardCorrectionManager::Instance();
121 if (!cm.Store(ret, runNo, sys, sNN, fld, false, false,
122 "fmd_corrections.root", "OLDER")) {
123 Error("", "Failed to store acceptance correction in local file");
124 return;
125 }
126
127}
128
129void ExtractAll() {
130 // We need to get a list of runs. We should make an entry for every
131 // pedestal and gain run.
132 //
133 // for y in `seq 2009 2013` ; do \
134 // for c in PulseGain Pedestal ; do \
135 // alien_ls /alice/data/${y}/OCDB/FMD/Calib/${c}/ | sed -e 's/Run//' -e 's/_.*//' ; \
136 // done ; \
137 // done | sort -u -n | grep -v ^0 | sed 's/\([0-9]*\)/ \1,/'
138 //
139 Int_t runs[] = {
140 // 58360,
141 // 61383,
142 // <-- Start of 2009
143 75201, 75238, 75311, 75330, 75383, 75384, 75630, 75631,
144 77901, 80649, 80650, 80738, 82055, 82301, 85947, 85948,
145 87560, 87561, 91794, 91795, 92436, 92441, 93271, 93273,
146 93587, 93588, 93595, 94793, 96747, 96945, 96947, 96949,
147 96956, 96962, 96963, 97226, 97228, 97593, 97996, 98780,
148 98782, 98974, 98980, 99033, 99084, 99085, 99414, 99726,
149 100075, 100273, 100594, 100595, 100868, 100967, 101808, 101809,
150 102034, 102036, 102043, 102238, 102240, 103639, 103641, 103984,
151 103989, 104108, 104109, 104167, 104169, 104526, 104529, 104901,
152 104904, 104914, 105111, 105112,
153 // <-- Start of 2010
154 105827, 105834, 105963, 107718, 110372, 110373, 113268, 113331,
155 113650, 113651, 114594, 114596, 115126, 115127, 115136, 115160,
156 115171, 115244, 115334, 115355, 115360, 115477, 115480, 115528,
157 115530, 115538, 115545, 115651, 115660, 116294, 116335, 116438,
158 116439, 116440, 116613, 116614, 116655, 117255, 117257, 117258,
159 117395, 117396, 117397, 117398, 117399, 117400, 117401, 117402,
160 117403, 117404, 117405, 117406, 117407, 117408, 117409, 117411,
161 117413, 117415, 117416, 117417, 117418, 117420, 117421, 117422,
162 117423, 117424, 117425, 117426, 117427, 117428, 117429, 117431,
163 117432, 117433, 117434, 117435, 117437, 117438, 117439, 117441,
164 117442, 117443, 117444, 117445, 117446, 117447, 117448, 117450,
165 117452, 117453, 117458, 117459, 117461, 117464, 117471, 117476,
166 117478, 117483, 117492, 117495, 117496, 117498, 117512, 117524,
167 117561, 117571, 117588, 117606, 117612, 117616, 117624, 117630,
168 117648, 117650, 117664, 117677, 117678, 117680, 117681, 117682,
169 117684, 117687, 117688, 117689, 117690, 117693, 117695, 117698,
170 117699, 117700, 117701, 117702, 117703, 117704, 117706, 117707,
171 117708, 117709, 117712, 117714, 117717, 117719, 117720, 117722,
172 117723, 117724, 117725, 117726, 117728, 117730, 117731, 117733,
173 117735, 117736, 117737, 117738, 117739, 117741, 117742, 117744,
174 117745, 117746, 117747, 117763, 117772, 117776, 117779, 117784,
175 119187, 119200, 120542, 120543, 121526, 121527, 121528, 121532,
176 121550, 121554, 121557, 121621, 121638, 121651, 121656, 121662,
177 121667, 121677, 121686, 121691, 121697, 121698, 121700, 121702,
178 121704, 121706, 121708, 121710, 121712, 121713, 121714, 121715,
179 121717, 121719, 121722, 121724, 121726, 121728, 121730, 121732,
180 121734, 121736, 121738, 121740, 121742, 121743, 121963, 121965,
181 121968, 121970, 121980, 121982, 121983, 121985, 121986, 121987,
182 121988, 121989, 121990, 121991, 121992, 121993, 121994, 121995,
183 121996, 121997, 121998, 121999, 122000, 122001, 122002, 122003,
184 122004, 122005, 122006, 122007, 122008, 122009, 122010, 122011,
185 122012, 122013, 124437, 124438, 125892, 125894, 125896, 125897,
186 126043, 126046, 126939, 126940, 128138, 128140, 128511, 128512,
187 129793, 129796, 129804, 130290, 130291, 131336, 131337, 131383,
188 131386, 131387, 131389, 131392, 131396, 131397, 131398, 131399,
189 131400, 132637, 132638, 132789, 132799, 135478, 135479, 136733,
190 136738, 136740, 138243, 138244, 138935,
191 // <-- Start of 2011
192 144429, 144751, 144837, 144856, 145167, 145169, 145170, 146647,
193 146650, 147281, 147285, 147289, 147299, 147301, 147307, 147318,
194 149252, 149256, 154053, 154054, 154057, 155422, 155424, 155430,
195 155933, 155934, 156030, 156032, 156037, 156038, 156201, 156202,
196 156204, 156207, 156217, 156222, 156778, 156780, 157800, 157801,
197 157802, 157804, 157805, 157808, 158993, 158994, 165623, 165636,
198 165637, 166817, 166819, 167219, 167221, 169438, 169443, 169446,
199 169448, 169449, 169450, 169451, 169484, 169486,
200 // <-- Start of 2012
201 172968, 172970, 175768, 175769, 176615, 176616, 176617, 177999,
202 178000, 178562, 178571, 179962, 179963, 182380, 182381, 183249,
203 183253, 183594, 183596, 184904, 184911, 184912, 185266, 185267,
204 185269, 185270, 185873, 186408, 186471, 187021, 187022, 187023,
205 187259, 187263, 187803, 187804, 188300, 188301, 188851, 188856,
206 189256, 189257, 191769, 191770,
207 // <-- Start of 2013
208 194507, 194522, 194523, 194526, 194589, 194590, 195027, 195030,
209 // <-- End marker
210 -1 };
211 Int_t* pRun = runs;
212 Int_t skipped = 0;
213 Int_t total = 0;
214 Int_t last = 0;
215 while (*pRun > 0) {
216 Int_t next = *(pRun+1);
217 Int_t dist = next - *pRun;
218 total++;
219 if (next > 0 && dist <= 20) {
220 skipped++;
221 pRun++;
222 continue;
223 }
224#if 0
225 if (last > 0) {
226 dist = *pRun - last;
227 Printf("%-6d %s%d,%d,",dist, url,last,*pRun);
228 }
229#endif
230 last = *pRun;
231 ExtractForRun(last);
232 pRun++;
233 }
234 Info("", "Skipped %d of %d", skipped, total);
235}
236//
237// EOF
238//