2 // Manager (singleton) of corrections
4 #include "AliCentralCorrectionManager.h"
5 #include "AliCentralCorrSecondaryMap.h"
6 #include "AliCentralCorrAcceptance.h"
7 #include "AliForwardUtil.h"
8 #include "AliOADBForward.h"
19 //____________________________________________________________________
20 AliCentralCorrectionManager* AliCentralCorrectionManager::fgInstance= 0;
21 const char* AliCentralCorrectionManager::fgkSecondaryMapSkel = "secondary";
22 const char* AliCentralCorrectionManager::fgkAcceptanceSkel = "acceptance";
24 #define PREFIX "$(ALICE_ROOT)/OADB/PWGLF/FORWARD/CORRECTIONS/data/"
25 #define DB_NAME "spd_corrections.root"
27 //____________________________________________________________________
28 AliCentralCorrectionManager& AliCentralCorrectionManager::Instance()
31 // Access to the singleton object
34 // Reference to the singleton object
36 if (!fgInstance) fgInstance= new AliCentralCorrectionManager(false);
40 //____________________________________________________________________
41 AliCentralCorrectionManager::AliCentralCorrectionManager()
44 // Default constructor
47 //____________________________________________________________________
48 AliCentralCorrectionManager::AliCentralCorrectionManager(Bool_t d)
49 : AliCorrectionManagerBase(d)
52 // Non-default constructor
57 RegisterCorrection(kIdSecondaryMap, fgkSecondaryMapSkel,
58 PREFIX DB_NAME, AliCentralCorrSecondaryMap::Class(),
59 kStandard|kSatellite);
60 RegisterCorrection(kIdAcceptance, fgkAcceptanceSkel,
61 PREFIX DB_NAME, AliCentralCorrAcceptance::Class(),
62 kStandard|kSatellite);
64 //____________________________________________________________________
66 AliCentralCorrectionManager::Init(ULong_t runNo,
76 // Read in correction based on passed parameters
79 // collisionSystem Collision system string
80 // cmsNN Center of mass energy per nucleon pair [GeV]
81 // field Magnetic field [kG]
82 // mc Monte-carlo switch
83 // what What to read in
84 // force Force (re-)reading of specified things
89 UShort_t col = AliForwardUtil::ParseCollisionSystem(sys);
90 // AliInfo(Form("Initialising with cms='%s', sNN=%fGeV field=%fkG",
92 return Init(runNo, col,
93 AliForwardUtil::ParseCenterOfMassEnergy(col, sNN),
94 AliForwardUtil::ParseMagneticField(field),
95 mc, sat, what, force);
98 //____________________________________________________________________
100 AliCentralCorrectionManager::Init(ULong_t runNo,
110 // Read in corrections based on the parameters given
113 // collisionSystem Collision system
114 // cmsNN Center of mass energy per nuclean pair [GeV]
115 // field Magnetic field setting [kG]
116 // mc Monte-carlo switch
117 // what What to read in.
118 // force Force (re-)reading of specified things
123 EnableCorrection(kIdSecondaryMap, what & kSecondaryMap);
124 EnableCorrection(kIdAcceptance, what & kAcceptance);
126 return InitCorrections(runNo, sys, sNN, field, mc, sat, force);
129 //____________________________________________________________________
131 AliCentralCorrectionManager::Append(const TString& addition,
132 const TString& destination) const
134 TString dest(destination);
136 dest = PREFIX DB_NAME;
137 return AliCorrectionManagerBase::Append(addition, destination);
140 //____________________________________________________________________
141 const AliCentralCorrSecondaryMap*
142 AliCentralCorrectionManager::GetSecondaryMap() const
145 * Get the secondary correction map
147 * @return Get the secondary correction map object or null
149 return static_cast<const AliCentralCorrSecondaryMap*>(Get(kIdSecondaryMap));
151 //____________________________________________________________________
152 const AliCentralCorrAcceptance*
153 AliCentralCorrectionManager::GetAcceptance() const
156 * Get the acceptance correction due to dead channels
159 * @return Acceptance correction due to dead channels
161 return static_cast<const AliCentralCorrAcceptance*>(Get(kIdAcceptance));
164 //____________________________________________________________________
166 AliCentralCorrectionManager::GetVertexAxis() const
168 const AliCentralCorrSecondaryMap* map = GetSecondaryMap();
170 return &(map->GetVertexAxis());
175 //______________________________________________________________________________
176 void AliCentralCorrectionManager::Streamer(TBuffer &R__b)
179 // Stream an object of class AliCentralCorrectionManager.
181 if (R__b.IsReading()) {
182 R__b.ReadClassBuffer(AliCentralCorrectionManager::Class(),this);
184 AliWarning(Form("Singleton instance already set (%p) when reading "
185 "singleton object (%p). Read object will be new "
186 "singleton object", fgInstance, this));
187 // delete fgInstance;
191 R__b.WriteClassBuffer(AliCentralCorrectionManager::Class(),this);
196 //____________________________________________________________________