#ifndef ALICDMESONBASE_H
#define ALICDMESONBASE_H
#include "THnSparse.h"
class TH2;
class TH2F;
class TH1F;
class TList;
class TObjArray;
class AliCDMesonBase
{
public:
enum{
kBinPM = 1,
kBinPPMM,
kBinPionE = 1,
kBinPion,
kBinSinglePion,
kBinKaonE,
kBinKaon,
kBinSingleKaon,
kBinProtonE,
kBinProton,
kBinSingleProton,
kBinElectronE,
kBinElectron,
kBinSingleElectron,
kBinPIDUnknown,
kBinDG = 1,
kBinGC,
kBinGA,
kBinNG,
kBinEventI = 1,
kBinEventA,
kBinEventC,
kBinEventAC,
kBinEventE,
kBinEventUnknown,
kBinTotalInput = 0,
kBinGoodInput,
kBinV0OR,
kBinV0AND,
kBinEventsAfterCuts,
kBinEventsWithOutPileUp,
kBinv0Gap,
kBinv0fmdGap,
kBinv0fmdspdGap,
kBinv0fmdspdtpcGap,
kBinv0fmdspdtpczdcGap,
kBinfmdGap,
kBinspdGap,
kBintpcGap,
kBintpcspdGap,
kBintpcspdfmdGap,
kBintpcspdfmdv0Gap,
kBinspdfmdGap,
kBinspdfmdv0Gap,
kBinTwoTrackEvents,
kBinThreeTrackEvents,
kBinPionEvents,
kBinKaonEvents,
kBinProtonEvents,
kBinElectronEvents,
kBinUnknownPIDEvents,
kBinResidualTracks,
kBinResidualTracklets,
kBinCDonlyEvents,
kBinLastValue,
kBinND = 0,
kBinCD,
kBinSD,
kBinDD,
kBitBaseLine = (1<<0),
kBitV0A = (1<<1),
kBitV0C = (1<<2),
kBitFMDA = (1<<3),
kBitFMDC = (1<<4),
kBitSPDA = (1<<5),
kBitSPDC = (1<<6),
kBitTPCA = (1<<7),
kBitTPCC = (1<<8),
kBitZDCA = (1<<9),
kBitZDCC = (1<<10),
kBitCentAct = (1<<11),
kBitGapMax = (1<<12),
kBitConfigurationSet = (1<<0),
kBitImposeZDCGap = (1<<1),
kBitEtaPhiMaps = (1<<2),
kBitEtaPhiMapsWithCuts = (1<<3),
kBitStatsFlow = (1<<4),
kBitMultPerGapHists = (1<<5),
kBitRmMultPerGapHists = (1<<6),
kBitTHnMother = (1<<7),
kBitFastORStudy = (1<<8),
kBitHitMapSPD = (1<<9),
kBitHitMapFMD = (1<<10),
kBitVtxStudies = (1<<11),
kBitEEStudy = (1<<12),
kBitPIDStudy = (1<<13),
kBitMCProcess = (1<<14),
kBitFMDsum = (1<<15),
kBitSoftTracks = (1<<16),
kBitPWAtree = (1<<17),
kBitTHnMC = (1<<18),
kBitMultResponseMC = (1<<19),
kBitMultStudy = (1<<20),
kBitReadPreprocessedGap = (1<<21),
kBitReduceGapEvents = (1<<22),
kBitVZEROStudy = (1<<23),
kBitTPCGapStudy = (1<<24),
kBitAllTrackMass = (1<<25),
kBitCDonly = (1<<26),
kBitFastORmultStudy = (1<<27),
kBitConfigurationVersion = (1<<28)
};
static Int_t GetGapBin(TString tag, Int_t gapcg,
Bool_t checkCentralActivity = kTRUE);
static THnSparseD* GetThnMother(TString name = "CDMeson_Mother");
static void FillThnMother(THnSparseD *thn, Double_t vNch,
Double_t vCombCh, Double_t vCombPID,
Double_t vV0, Double_t vFMD,
Double_t vSPD, Double_t vTPC,
Double_t vMass, Double_t vPt,
Double_t vOA, Double_t vCTS,
Double_t vDaughterPt,
Double_t vTrackResiduals,
Double_t vVertexZ,
Double_t vProcessType,
Double_t vVertexCoincidence,
Double_t vTrkltResiduals);
static Int_t GetAxisMother(TString name);
static THnSparseD* GetThnEmptyEvents();
static void FillThnEmptyEvents(THnSparseD *thn, Int_t eventType,
Int_t multFMDA, Int_t multFMDC,
Int_t multSPDIA, Int_t multSPDIC,
Int_t multSPDOA, Int_t multSPDOC,
Int_t multSPDtrklA,
Int_t multSPDtrklC, Int_t fmdSum1I,
Int_t fmdSum2I, Int_t fmdSum20,
Int_t fmdSum3I, Int_t fmdSum3O);
static Int_t GetAxisEmptyEvents(TString name);
static THnSparseD* GetThnMultiplicity();
static void FillThnMultiplicity(THnSparseD *thn, Double_t vNch,
Double_t vNsoft,
Double_t vNcombined,
Double_t vV0, Double_t vFMD,
Double_t vSPD, Double_t vTPC,
Double_t vNresidualTracks,
Double_t vNresidualTracklets,
Double_t vVertexZ,
Double_t vVerticesDistance,
Double_t vProcessType);
static Int_t GetAxisMultiplicity(TString name);
static TH1F* GetHistStatsFlow();
static TH2F* GetHistPIDStudies(TString name);
static TObjArray* GetHistVZEROStudies(TList* l);
static void GetGapTriggers(THnSparseI* gaprun, Int_t gapCondition,
Int_t run, Double_t& triggers,
Double_t& total);
static void GetNoGapTriggers(THnSparseI* gaprun, Int_t gapCondition,
Int_t run, Double_t& triggers,
Double_t& total);
private:
static void CheckRange(Double_t &var, Double_t min, Double_t max);
static Int_t GetAxis(TString thntit, TString name);
static TString GetTitleMother();
static TString GetTitleEmptyEvents();
static TString GetTitleMultiplicity();
static const Int_t fgkNNcombined;
static const Double_t fgkMinNcombined;
static const Double_t fgkMaxNcombined;
static const Int_t fgkNCombCh;
static const Double_t fgkMinCombCh;
static const Double_t fgkMaxCombCh;
static const Int_t fgkNCombPID;
static const Double_t fgkMinCombPID;
static const Double_t fgkMaxCombPID;
static const Int_t fgkNGapConfig;
static const Double_t fgkMinGapConfig;
static const Double_t fgkMaxGapConfig;
static const Int_t fgkNMass;
static const Double_t fgkMinMass;
static const Double_t fgkMaxMass;
static const Int_t fgkNMotherPt;
static const Double_t fgkMinMotherPt;
static const Double_t fgkMaxMotherPt;
static const Int_t fgkNCTS;
static const Double_t fgkMinCTS;
static const Double_t fgkMaxCTS;
static const Int_t fgkNOA;
static const Double_t fgkMinOA;
static const Double_t fgkMaxOA;
static const Int_t fgkNDaughterPt;
static const Double_t fgkMinDaughterPt;
static const Double_t fgkMaxDaughterPt;
static const Int_t fgkNTrackResiduals;
static const Double_t fgkMinTrackResiduals;
static const Double_t fgkMaxTrackResiduals;
static const Int_t fgkNVertexZinRng;
static const Double_t fgkMinVertexZinRng;
static const Double_t fgkMaxVertexZinRng;
static const Int_t fgkNVertexCoincidence;
static const Double_t fgkMinVertexCoincidence;
static const Double_t fgkMaxVertexCoincidence;
static const Int_t fgkNTrackletResiduals;
static const Double_t fgkMinTrackletResiduals;
static const Double_t fgkMaxTrackletResiduals;
static const Int_t fgkNProcessType;
static const Double_t fgkMinProcessType;
static const Double_t fgkMaxProcessType;
static const Int_t fgkNEventType;
static const Double_t fgkMinEventType;
static const Double_t fgkMaxEventType;
static const Int_t fgkNMult;
static const Double_t fgkMinMult;
static const Double_t fgkMaxMult;
static const Int_t fgkNMultW;
static const Double_t fgkMinMultW;
static const Double_t fgkMaxMultW;
static const Int_t fgkNNch;
static const Double_t fgkMinNch;
static const Double_t fgkMaxNch;
static const Int_t fgkNNsoft;
static const Double_t fgkMinNsoft;
static const Double_t fgkMaxNsoft;
static const Int_t fgkNNcomb;
static const Double_t fgkMinNcomb;
static const Double_t fgkMaxNcomb;
static const Int_t fgkNNresidualTracks;
static const Double_t fgkMinNresidualTracks;
static const Double_t fgkMaxNresidualTracks;
static const Int_t fgkNNresidualTracklets;
static const Double_t fgkMinNresidualTracklets;
static const Double_t fgkMaxNresidualTracklets;
static const Int_t fgkNVertexZ;
static const Double_t fgkMinVertexZ;
static const Double_t fgkMaxVertexZ;
static const Int_t fgkNVerticesDistance;
static const Double_t fgkMinVerticesDistance;
static const Double_t fgkMaxVerticesDistance;
};
#endif