o one more fix: the weight need to stay in order. Funny ...
[u/mrichter/AliRoot.git] / TPC / Upgrade / macros / GetComposedResidualDistortion.C
CommitLineData
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
12AliTPCComposedCorrection* 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);
e4c65254 39 weights(0)=+1.;
40 weights(1)=-1.;
0f236b4e 41 if (rescale) {
42 Float_t dummy=0;
e4c65254 43 weights(1)=-AliToyMCEventGenerator::GetSCScalingFactor(corrFluct, corrAverage,dummy);
0f236b4e 44 }
45 residualDistortion->SetWeights(&weights);
46
47 return residualDistortion;
48}