ROOT logo
/* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice */

// Short comment describing what this class does needed!

#ifndef ALIJRUNTABLE_H
#define ALIJRUNTABLE_H

#include <TString.h>
#include <vector>
class AliJRunTable {
public:
  enum { kUnknownPeriod, kLHC10b, kLHC10c, kLHC10d, kLHC10e,
    kLHC10h, kLHC11a,kLHC11b , kLHC11c , kLHC11d, kLHC11e, kLHC11h, kLHC12g,kLHC12h,
    kLHC13b, kLHC13c, kLHC13d, kLHC13e, kLHC13g,
    kJNPeriod};
  enum { kRE, kMC };
  enum { kPP, kPbPb, kPA };
  AliJRunTable();
  void Init();
  void AddGoodRun(int period, int runnumber){ fGoodRun[period].push_back(runnumber); }
  TString GetPeriodName( int period=-1 ) const;
  int GetBeamType( int period ) const { return fBeamType[period]; }
  TString GetMCPeriod( int period ) const { return fMCPeriod[period]; }
  int GetPeriodCode(TString perstr) const;
  int GetRunNumberToPeriod( int runnumber );
  void SetPeriodInformation(int period, TString name, int beamtype, int datatype, int energy, int run0, int run1, TString MCPeriod);
  int GetBeamEnergy(int period) const { return fEnergy[period]; }
  
  int GetRunNumberFromString( const char * tstr );
  TString GetPeriodFromString( const char * tstr ) const;
  TString GetMCPeriodFromString( const char * tstr) const;
  int GetPeriodFromMCPeriod( const char * tstr );
  const char * GetBeamStr( int ib=-1 ) const;  // Never used anywhere, should it be removed?
  const char * GetDataStr( int ib=-1 ) const;  // Never used anywhere, should it be removed?
  const char * GetEnergyStr( int ib=-1 ) const; // Never used anywhere, should it be removed?
  bool ParseString( const char * tstr );
  
  int GetPeriod() const { return fCPeriod; }
  TString GetPeriodMCName() const { return fCPeriodMCName; }
  int GetBeamType() const { return fBeamType[fCPeriod]; }
  TString GetBeamTypeStr() const { return IsPP()?"pp":IsPA()?"pA":IsHeavyIon()?"PbPb":""; }
  void SetRunNumber( int run ){ fCRunNumber=run;fCPeriod=GetRunNumberToPeriod(run); }
  int GetRunNumber() const { return fCRunNumber; }
  
  bool IsHeavyIon() const { return fBeamType[fCPeriod]==kPbPb; }
  bool IsPA() const { return fBeamType[fCPeriod]==kPA; }
  bool IsPP() const { return fBeamType[fCPeriod]==kPP; }
  
  AliJRunTable *  operator()( int run ){ SetRunNumber(run);return this; }
  static AliJRunTable& GetSpecialInstance();
  static const AliJRunTable& GetInstance();
  
private:
  int fBeamType[kJNPeriod];  // comment needed
  int fDataType[kJNPeriod];  // comment needed
  int fEnergy[kJNPeriod]; // comment needed
  long fRunRange[kJNPeriod][2]; // comment needed
  TString fMCPeriod[kJNPeriod]; // comment needed
  TString fPeriodName[kJNPeriod]; // comment needed
  std::vector<int> fGoodRun[kJNPeriod]; // comment needed
  
  int fCPeriod; // comment needed
  int fCRunNumber; // comment needed
  TString fCPeriodMCName; // comment needed
};

#endif
 AliJRunTable.h:1
 AliJRunTable.h:2
 AliJRunTable.h:3
 AliJRunTable.h:4
 AliJRunTable.h:5
 AliJRunTable.h:6
 AliJRunTable.h:7
 AliJRunTable.h:8
 AliJRunTable.h:9
 AliJRunTable.h:10
 AliJRunTable.h:11
 AliJRunTable.h:12
 AliJRunTable.h:13
 AliJRunTable.h:14
 AliJRunTable.h:15
 AliJRunTable.h:16
 AliJRunTable.h:17
 AliJRunTable.h:18
 AliJRunTable.h:19
 AliJRunTable.h:20
 AliJRunTable.h:21
 AliJRunTable.h:22
 AliJRunTable.h:23
 AliJRunTable.h:24
 AliJRunTable.h:25
 AliJRunTable.h:26
 AliJRunTable.h:27
 AliJRunTable.h:28
 AliJRunTable.h:29
 AliJRunTable.h:30
 AliJRunTable.h:31
 AliJRunTable.h:32
 AliJRunTable.h:33
 AliJRunTable.h:34
 AliJRunTable.h:35
 AliJRunTable.h:36
 AliJRunTable.h:37
 AliJRunTable.h:38
 AliJRunTable.h:39
 AliJRunTable.h:40
 AliJRunTable.h:41
 AliJRunTable.h:42
 AliJRunTable.h:43
 AliJRunTable.h:44
 AliJRunTable.h:45
 AliJRunTable.h:46
 AliJRunTable.h:47
 AliJRunTable.h:48
 AliJRunTable.h:49
 AliJRunTable.h:50
 AliJRunTable.h:51
 AliJRunTable.h:52
 AliJRunTable.h:53
 AliJRunTable.h:54
 AliJRunTable.h:55
 AliJRunTable.h:56
 AliJRunTable.h:57
 AliJRunTable.h:58
 AliJRunTable.h:59
 AliJRunTable.h:60
 AliJRunTable.h:61
 AliJRunTable.h:62
 AliJRunTable.h:63
 AliJRunTable.h:64
 AliJRunTable.h:65
 AliJRunTable.h:66
 AliJRunTable.h:67
 AliJRunTable.h:68