]>
Commit | Line | Data |
---|---|---|
0f236b4e | 1 | #include <TString.h> |
2 | #include <TVectorD.h> | |
3 | #include <TObjArray.h> | |
4 | #include <TFile.h> | |
5 | ||
6 | #include <AliTPCComposedCorrection.h> | |
7 | #include <AliTPCCorrectionLookupTable.h> | |
8 | ||
9 | #include <AliToyMCEventGenerator.h> | |
10 | ||
11 | ||
12 | AliTPCComposedCorrection* GetComposedResidualDistortion(TString fluctuationMap, TString averageMap, Bool_t rescale=kTRUE) | |
13 | { | |
14 | // | |
15 | // | |
16 | // | |
17 | ||
18 | ||
19 | TFile fFluct(fluctuationMap); | |
20 | AliTPCCorrectionLookupTable *corrFluct = (AliTPCCorrectionLookupTable*)fFluct.Get("map"); | |
21 | fFluct.Close(); | |
22 | ||
23 | TFile fAverage(averageMap); | |
24 | AliTPCCorrectionLookupTable *corrAverage = (AliTPCCorrectionLookupTable*)fAverage.Get("map"); | |
25 | fAverage.Close(); | |
26 | ||
27 | TObjArray *arrMaps = new TObjArray(2); | |
ee3eac14 | 28 | // !!!!! In AliTPCComposedCorrection::GetDistortion MakeInverseIterator is called !!!! |
29 | // for this reason we have to add the maps in the wrong order | |
30 | ||
0f236b4e | 31 | arrMaps->Add(corrAverage); // correction with the average Map |
ee3eac14 | 32 | arrMaps->Add(corrFluct); // distortion with the fluctuation Map |
0f236b4e | 33 | |
34 | // create the composed correction | |
35 | // if the weight are set to +1 and -1, the first map will be responsible for the distortions | |
36 | // The second map for the corrections | |
37 | AliTPCComposedCorrection *residualDistortion = new AliTPCComposedCorrection(arrMaps, AliTPCComposedCorrection::kQueueResidual); | |
38 | TVectorD weights(2); | |
ee3eac14 | 39 | weights(1)=+1.; |
40 | weights(0)=-1.; | |
0f236b4e | 41 | if (rescale) { |
42 | Float_t dummy=0; | |
ee3eac14 | 43 | weights(0)=-AliToyMCEventGenerator::GetSCScalingFactor(corrFluct, corrAverage,dummy); |
0f236b4e | 44 | } |
45 | residualDistortion->SetWeights(&weights); | |
46 | ||
47 | return residualDistortion; | |
48 | } |