ROOT logo
//
// Manager (singleton) of corrections 
// 
#include "AliCentralCorrectionManager.h"
#include "AliCentralCorrSecondaryMap.h"
#include "AliCentralCorrAcceptance.h"
#include "AliForwardUtil.h"
#include "AliOADBForward.h"
#include <TString.h>
#include <AliLog.h>
#include <TFile.h>
#include <TSystem.h>
#include <TBrowser.h>
#include <TROOT.h>
#include <TClass.h>
#include <iostream>
#include <iomanip>
    
//____________________________________________________________________
AliCentralCorrectionManager* AliCentralCorrectionManager::fgInstance= 0;
const char* AliCentralCorrectionManager::fgkSecondaryMapSkel = "secondary";
const char* AliCentralCorrectionManager::fgkAcceptanceSkel   = "acceptance";

#define PREFIX  "$(ALICE_ROOT)/OADB/PWGLF/FORWARD/CORRECTIONS/data/"
#define DB_NAME "spd_corrections.root"

//____________________________________________________________________
AliCentralCorrectionManager& AliCentralCorrectionManager::Instance()
{
  // 
  // Access to the singleton object 
  // 
  // Return:
  //    Reference to the singleton object 
  //
  if (!fgInstance) fgInstance= new AliCentralCorrectionManager(false);
  return *fgInstance;
}

//____________________________________________________________________
AliCentralCorrectionManager::AliCentralCorrectionManager()
{
  // 
  // Default constructor 
  //
}
//____________________________________________________________________
AliCentralCorrectionManager::AliCentralCorrectionManager(Bool_t d)
  : AliCorrectionManagerBase(d)
{
  // 
  // Non-default constructor
  // 
  // Parameters:
  //    Not used
  //
  RegisterCorrection(kIdSecondaryMap, fgkSecondaryMapSkel, 
		     PREFIX DB_NAME, AliCentralCorrSecondaryMap::Class(), 
		     kStandard|kSatellite);
  RegisterCorrection(kIdAcceptance, fgkAcceptanceSkel, 
		     PREFIX DB_NAME, AliCentralCorrAcceptance::Class(),
		     kStandard|kSatellite);
}
//____________________________________________________________________
Bool_t
AliCentralCorrectionManager::Init(ULong_t     runNo, 
				      const char* sys, 
				      Float_t     sNN, 
				      Float_t     field,
				      Bool_t      mc,
				      Bool_t      sat,
				      UInt_t      what,
				      Bool_t      force)
{
  // 
  // Read in correction based on passed parameters
  // 
  // Parameters:
  //    collisionSystem Collision system string 
  //    cmsNN           Center of mass energy per nucleon pair [GeV]
  //    field           Magnetic field [kG]
  //    mc              Monte-carlo switch
  //    what            What to read in 
  //    force           Force (re-)reading of specified things
  // 
  // Return:
  //    true on success
  //
  UShort_t col = AliForwardUtil::ParseCollisionSystem(sys);
  // AliInfo(Form("Initialising with cms='%s', sNN=%fGeV field=%fkG", 
  //	       cms, sNN, field));
  return Init(runNo, col, 
	      AliForwardUtil::ParseCenterOfMassEnergy(col, sNN),
	      AliForwardUtil::ParseMagneticField(field), 
	      mc, sat, what, force);
}

//____________________________________________________________________
Bool_t
AliCentralCorrectionManager::Init(ULong_t  runNo, 
				      UShort_t sys, 
				      UShort_t sNN, 
				      Short_t  field,
				      Bool_t   mc,
				      Bool_t   sat,
				      UInt_t   what,
				      Bool_t   force)
{
  // 
  // Read in corrections based on the parameters given 
  // 
  // Parameters:
  //    collisionSystem Collision system
  //    cmsNN           Center of mass energy per nuclean pair [GeV]
  //    field           Magnetic field setting [kG]
  //    mc              Monte-carlo switch
  //    what            What to read in. 
  //    force           Force (re-)reading of specified things
  // 
  // Return:
  //    
  //
  EnableCorrection(kIdSecondaryMap,	what & kSecondaryMap);
  EnableCorrection(kIdAcceptance,	what & kAcceptance);
  
  return InitCorrections(runNo, sys, sNN, field, mc, sat, force);
}

//____________________________________________________________________
Bool_t
AliCentralCorrectionManager::Append(const TString& addition, 
				    const TString& destination) const
{
  TString dest(destination);
  if (dest.IsNull()) 
    dest = PREFIX DB_NAME;
  return AliCorrectionManagerBase::Append(addition, dest);
}

//____________________________________________________________________
const AliCentralCorrSecondaryMap*
AliCentralCorrectionManager::GetSecondaryMap() const 
{
  /** 
   * Get the secondary correction map
   * 
   * @return Get the secondary correction map object or null
   */
  return static_cast<const AliCentralCorrSecondaryMap*>(Get(kIdSecondaryMap)); 
}
//____________________________________________________________________
const AliCentralCorrAcceptance*
AliCentralCorrectionManager::GetAcceptance() const 
{
  /** 
   * Get the acceptance correction due to dead channels 
   * 
   * 
   * @return Acceptance correction due to dead channels 
   */
  return static_cast<const AliCentralCorrAcceptance*>(Get(kIdAcceptance)); 
}

//____________________________________________________________________
const TAxis* 
AliCentralCorrectionManager::GetVertexAxis() const
{
  const AliCentralCorrSecondaryMap* map = GetSecondaryMap();
  if (!map) return 0;
  return &(map->GetVertexAxis());
}


#ifndef DOXY_INPUT
//______________________________________________________________________________
void AliCentralCorrectionManager::Streamer(TBuffer &R__b)
{
  //
  // Stream an object of class AliCentralCorrectionManager.
  //
  if (R__b.IsReading()) {
     R__b.ReadClassBuffer(AliCentralCorrectionManager::Class(),this);
     if (fgInstance) {
       AliWarning(Form("Singleton instance already set (%p) when reading "
		       "singleton object (%p).  Read object will be new "
		       "singleton object", fgInstance, this));
       // delete fgInstance;
     }
     fgInstance = this;
  } else {
    R__b.WriteClassBuffer(AliCentralCorrectionManager::Class(),this);
  }
}
#endif

//____________________________________________________________________
//
// EOF
//
 AliCentralCorrectionManager.cxx:1
 AliCentralCorrectionManager.cxx:2
 AliCentralCorrectionManager.cxx:3
 AliCentralCorrectionManager.cxx:4
 AliCentralCorrectionManager.cxx:5
 AliCentralCorrectionManager.cxx:6
 AliCentralCorrectionManager.cxx:7
 AliCentralCorrectionManager.cxx:8
 AliCentralCorrectionManager.cxx:9
 AliCentralCorrectionManager.cxx:10
 AliCentralCorrectionManager.cxx:11
 AliCentralCorrectionManager.cxx:12
 AliCentralCorrectionManager.cxx:13
 AliCentralCorrectionManager.cxx:14
 AliCentralCorrectionManager.cxx:15
 AliCentralCorrectionManager.cxx:16
 AliCentralCorrectionManager.cxx:17
 AliCentralCorrectionManager.cxx:18
 AliCentralCorrectionManager.cxx:19
 AliCentralCorrectionManager.cxx:20
 AliCentralCorrectionManager.cxx:21
 AliCentralCorrectionManager.cxx:22
 AliCentralCorrectionManager.cxx:23
 AliCentralCorrectionManager.cxx:24
 AliCentralCorrectionManager.cxx:25
 AliCentralCorrectionManager.cxx:26
 AliCentralCorrectionManager.cxx:27
 AliCentralCorrectionManager.cxx:28
 AliCentralCorrectionManager.cxx:29
 AliCentralCorrectionManager.cxx:30
 AliCentralCorrectionManager.cxx:31
 AliCentralCorrectionManager.cxx:32
 AliCentralCorrectionManager.cxx:33
 AliCentralCorrectionManager.cxx:34
 AliCentralCorrectionManager.cxx:35
 AliCentralCorrectionManager.cxx:36
 AliCentralCorrectionManager.cxx:37
 AliCentralCorrectionManager.cxx:38
 AliCentralCorrectionManager.cxx:39
 AliCentralCorrectionManager.cxx:40
 AliCentralCorrectionManager.cxx:41
 AliCentralCorrectionManager.cxx:42
 AliCentralCorrectionManager.cxx:43
 AliCentralCorrectionManager.cxx:44
 AliCentralCorrectionManager.cxx:45
 AliCentralCorrectionManager.cxx:46
 AliCentralCorrectionManager.cxx:47
 AliCentralCorrectionManager.cxx:48
 AliCentralCorrectionManager.cxx:49
 AliCentralCorrectionManager.cxx:50
 AliCentralCorrectionManager.cxx:51
 AliCentralCorrectionManager.cxx:52
 AliCentralCorrectionManager.cxx:53
 AliCentralCorrectionManager.cxx:54
 AliCentralCorrectionManager.cxx:55
 AliCentralCorrectionManager.cxx:56
 AliCentralCorrectionManager.cxx:57
 AliCentralCorrectionManager.cxx:58
 AliCentralCorrectionManager.cxx:59
 AliCentralCorrectionManager.cxx:60
 AliCentralCorrectionManager.cxx:61
 AliCentralCorrectionManager.cxx:62
 AliCentralCorrectionManager.cxx:63
 AliCentralCorrectionManager.cxx:64
 AliCentralCorrectionManager.cxx:65
 AliCentralCorrectionManager.cxx:66
 AliCentralCorrectionManager.cxx:67
 AliCentralCorrectionManager.cxx:68
 AliCentralCorrectionManager.cxx:69
 AliCentralCorrectionManager.cxx:70
 AliCentralCorrectionManager.cxx:71
 AliCentralCorrectionManager.cxx:72
 AliCentralCorrectionManager.cxx:73
 AliCentralCorrectionManager.cxx:74
 AliCentralCorrectionManager.cxx:75
 AliCentralCorrectionManager.cxx:76
 AliCentralCorrectionManager.cxx:77
 AliCentralCorrectionManager.cxx:78
 AliCentralCorrectionManager.cxx:79
 AliCentralCorrectionManager.cxx:80
 AliCentralCorrectionManager.cxx:81
 AliCentralCorrectionManager.cxx:82
 AliCentralCorrectionManager.cxx:83
 AliCentralCorrectionManager.cxx:84
 AliCentralCorrectionManager.cxx:85
 AliCentralCorrectionManager.cxx:86
 AliCentralCorrectionManager.cxx:87
 AliCentralCorrectionManager.cxx:88
 AliCentralCorrectionManager.cxx:89
 AliCentralCorrectionManager.cxx:90
 AliCentralCorrectionManager.cxx:91
 AliCentralCorrectionManager.cxx:92
 AliCentralCorrectionManager.cxx:93
 AliCentralCorrectionManager.cxx:94
 AliCentralCorrectionManager.cxx:95
 AliCentralCorrectionManager.cxx:96
 AliCentralCorrectionManager.cxx:97
 AliCentralCorrectionManager.cxx:98
 AliCentralCorrectionManager.cxx:99
 AliCentralCorrectionManager.cxx:100
 AliCentralCorrectionManager.cxx:101
 AliCentralCorrectionManager.cxx:102
 AliCentralCorrectionManager.cxx:103
 AliCentralCorrectionManager.cxx:104
 AliCentralCorrectionManager.cxx:105
 AliCentralCorrectionManager.cxx:106
 AliCentralCorrectionManager.cxx:107
 AliCentralCorrectionManager.cxx:108
 AliCentralCorrectionManager.cxx:109
 AliCentralCorrectionManager.cxx:110
 AliCentralCorrectionManager.cxx:111
 AliCentralCorrectionManager.cxx:112
 AliCentralCorrectionManager.cxx:113
 AliCentralCorrectionManager.cxx:114
 AliCentralCorrectionManager.cxx:115
 AliCentralCorrectionManager.cxx:116
 AliCentralCorrectionManager.cxx:117
 AliCentralCorrectionManager.cxx:118
 AliCentralCorrectionManager.cxx:119
 AliCentralCorrectionManager.cxx:120
 AliCentralCorrectionManager.cxx:121
 AliCentralCorrectionManager.cxx:122
 AliCentralCorrectionManager.cxx:123
 AliCentralCorrectionManager.cxx:124
 AliCentralCorrectionManager.cxx:125
 AliCentralCorrectionManager.cxx:126
 AliCentralCorrectionManager.cxx:127
 AliCentralCorrectionManager.cxx:128
 AliCentralCorrectionManager.cxx:129
 AliCentralCorrectionManager.cxx:130
 AliCentralCorrectionManager.cxx:131
 AliCentralCorrectionManager.cxx:132
 AliCentralCorrectionManager.cxx:133
 AliCentralCorrectionManager.cxx:134
 AliCentralCorrectionManager.cxx:135
 AliCentralCorrectionManager.cxx:136
 AliCentralCorrectionManager.cxx:137
 AliCentralCorrectionManager.cxx:138
 AliCentralCorrectionManager.cxx:139
 AliCentralCorrectionManager.cxx:140
 AliCentralCorrectionManager.cxx:141
 AliCentralCorrectionManager.cxx:142
 AliCentralCorrectionManager.cxx:143
 AliCentralCorrectionManager.cxx:144
 AliCentralCorrectionManager.cxx:145
 AliCentralCorrectionManager.cxx:146
 AliCentralCorrectionManager.cxx:147
 AliCentralCorrectionManager.cxx:148
 AliCentralCorrectionManager.cxx:149
 AliCentralCorrectionManager.cxx:150
 AliCentralCorrectionManager.cxx:151
 AliCentralCorrectionManager.cxx:152
 AliCentralCorrectionManager.cxx:153
 AliCentralCorrectionManager.cxx:154
 AliCentralCorrectionManager.cxx:155
 AliCentralCorrectionManager.cxx:156
 AliCentralCorrectionManager.cxx:157
 AliCentralCorrectionManager.cxx:158
 AliCentralCorrectionManager.cxx:159
 AliCentralCorrectionManager.cxx:160
 AliCentralCorrectionManager.cxx:161
 AliCentralCorrectionManager.cxx:162
 AliCentralCorrectionManager.cxx:163
 AliCentralCorrectionManager.cxx:164
 AliCentralCorrectionManager.cxx:165
 AliCentralCorrectionManager.cxx:166
 AliCentralCorrectionManager.cxx:167
 AliCentralCorrectionManager.cxx:168
 AliCentralCorrectionManager.cxx:169
 AliCentralCorrectionManager.cxx:170
 AliCentralCorrectionManager.cxx:171
 AliCentralCorrectionManager.cxx:172
 AliCentralCorrectionManager.cxx:173
 AliCentralCorrectionManager.cxx:174
 AliCentralCorrectionManager.cxx:175
 AliCentralCorrectionManager.cxx:176
 AliCentralCorrectionManager.cxx:177
 AliCentralCorrectionManager.cxx:178
 AliCentralCorrectionManager.cxx:179
 AliCentralCorrectionManager.cxx:180
 AliCentralCorrectionManager.cxx:181
 AliCentralCorrectionManager.cxx:182
 AliCentralCorrectionManager.cxx:183
 AliCentralCorrectionManager.cxx:184
 AliCentralCorrectionManager.cxx:185
 AliCentralCorrectionManager.cxx:186
 AliCentralCorrectionManager.cxx:187
 AliCentralCorrectionManager.cxx:188
 AliCentralCorrectionManager.cxx:189
 AliCentralCorrectionManager.cxx:190
 AliCentralCorrectionManager.cxx:191
 AliCentralCorrectionManager.cxx:192
 AliCentralCorrectionManager.cxx:193
 AliCentralCorrectionManager.cxx:194
 AliCentralCorrectionManager.cxx:195
 AliCentralCorrectionManager.cxx:196
 AliCentralCorrectionManager.cxx:197
 AliCentralCorrectionManager.cxx:198
 AliCentralCorrectionManager.cxx:199