A++ » INC » AtlEvtReaderD3PDSgTopR2

class AtlEvtReaderD3PDSgTopR2: public AtlEvtReaderD3PDBase


 ATLAS Event Reader for the SgTop-DPDs at Run-II

 See BuildTriggerConfig() for details about the available trigger
 decision. To access the trigger information use the function
 AtlEvent::HasPassedHLT() on the current event.

 Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
 Update: $Id: AtlEvtReaderD3PDSgTopR2.cxx,v 1.29 2017/10/26 08:43:04 mergelm Exp $
 Copyright: 2015 (C) Oliver Maria Kind

Function Members (Methods)

public:
virtual~AtlEvtReaderD3PDSgTopR2()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
AtlEvtReaderD3PDSgTopR2(const AtlEvtReaderD3PDSgTopR2&)
AtlEvtReaderD3PDSgTopR2(AtlSelector* parent, AtlEvtReaderD3PDSgTopR2::EDataType dataType, const char* D3PDversion, const char* systematicName, const char* treeNameSuffix)
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual AtlEvtReaderBase::InitialSumOfWeights_tGetInitialSumOfWeights(TFile* inputFile) const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Int_tAtlEvtReaderD3PDBase::GetRunLast()
virtual const char*TObject::GetTitle() const
const char*GetTreeName() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
Bool_tAtlEvtReaderBase::IsFirstEvent() const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tNotify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AtlEvtReaderD3PDSgTopR2&operator=(const AtlEvtReaderD3PDSgTopR2&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "")
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidSetBranches(TTree* tree)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAtlEvtReaderBase::SetEvent(AtlEvent* evt)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
static Bool_tAtlEvtReaderBase::SumOverTree(TTree* tree, const char* expression, Double_t& result)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidBuildElectrons()
virtual voidBuildEnergySum()
virtual voidBuildEvent()
virtual voidBuildEventHeader()
virtual voidBuildFromTruthTree()
virtual voidBuildJets()
virtual voidBuildMuons()
virtual voidBuildTriggerConfig(UInt_t RunStart, UInt_t RunEnd)
virtual voidBuildTriggerDecision()
virtual voidClearBranches()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual Int_tGetEntry(TTree* t, Long64_t entry)
voidAtlEvtReaderD3PDBase::InitBranches(TTree* t)
virtual voidAtlEvtReaderD3PDBase::InitObjPointers()
Bool_tIsMC() const
voidLoadTruthTree()
voidTObject::MakeZombie()
voidAtlEvtReaderD3PDBase::SetupBranch(TTree* t, const char* branchname, void* value, TBranch** branch)

Data Members

public:
static const size_tPeriodLimit
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static AtlEvtReaderD3PDSgTopR2::EDataTypekMC
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static AtlEvtReaderD3PDSgTopR2::EDataTypekRealData
static TObject::(anonymous)TObject::kSingleKey
static AtlEvtReaderD3PDSgTopR2::EDataTypekUndefinedDataType
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
protected:
TBranch*b_HLT_e120_lhloose
TBranch*b_HLT_e140_lhloose_nod0
TBranch*b_HLT_e24_lhmedium_L1EM18VH!
TBranch*b_HLT_e24_lhmedium_L1EM20VH
TBranch*b_HLT_e24_lhmedium_iloose_L1EM20VH!
TBranch*b_HLT_e26_lhtight_nod0_ivarloose
TBranch*b_HLT_e60_lhmedium
TBranch*b_HLT_e60_lhmedium_nod0
TBranch*b_HLT_mu20_iloose_L1MU15
TBranch*b_HLT_mu20_iloose_mu8noL1!
TBranch*b_HLT_mu26_ivarmedium
TBranch*b_HLT_mu50
TBranch*b_Ht!
TBranch*b_MT2!
TBranch*b_Vtxz!
TBranch*b_ee!
TBranch*b_ee_2015!
TBranch*b_ee_2016!
TBranch*b_eee!
TBranch*b_eee_2015!
TBranch*b_eee_2016!
TBranch*b_eemu!
TBranch*b_eemu_2015!
TBranch*b_eemu_2016!
TBranch*b_efatJet!
TBranch*b_efatJet_2015!
TBranch*b_efatJet_2016!
TBranch*b_ejets!
TBranch*b_ejets_2015!
TBranch*b_ejets_2016!
TBranch*b_el_MT!
TBranch*b_el_W_eta!
TBranch*b_el_W_pT!
TBranch*b_el_W_phi!
TBranch*b_el_charge!
TBranch*b_el_d0!
TBranch*b_el_d0sig!
TBranch*b_el_e!
TBranch*b_el_eta!
TBranch*b_el_n!
TBranch*b_el_nu_eta!
TBranch*b_el_nu_pT!
TBranch*b_el_nu_phi!
TBranch*b_el_phi!
TBranch*b_el_pt!
TBranch*b_el_ptcone30!
TBranch*b_el_ptcone40!
TBranch*b_el_ptvarcone20!
TBranch*b_el_tight!
TBranch*b_el_topoetcone20!
TBranch*b_el_topoetcone30!
TBranch*b_el_topoetcone40!
TBranch*b_el_trigMatch!
TBranch*b_el_true_eta!
TBranch*b_el_true_origin!
TBranch*b_el_true_originbkg!
TBranch*b_el_true_pdg!
TBranch*b_el_true_pt!
TBranch*b_el_true_type!
TBranch*b_el_true_typebkg!
TBranch*b_el_z0!
TBranch*b_el_z0sig!
TBranch*b_emu!
TBranch*b_emu_2015!
TBranch*b_emu_2016!
TBranch*b_emumu!
TBranch*b_emumu_2015!
TBranch*b_emumu_2016!
TBranch*b_eventNumber!
TBranch*b_genfilter_BHadron!
TBranch*b_genfilter_CHadronPt4Eta3!
TBranch*b_jet_e!
TBranch*b_jet_eta!
TBranch*b_jet_ip3dsv1!
TBranch*b_jet_isbtagged_70!
TBranch*b_jet_isbtagged_77!
TBranch*b_jet_isbtagged_85!
TBranch*b_jet_jvt!
TBranch*b_jet_m!
TBranch*b_jet_mv2c00!
TBranch*b_jet_mv2c10!
TBranch*b_jet_mv2c20!
TBranch*b_jet_n!
TBranch*b_jet_phi!
TBranch*b_jet_pt!
TBranch*b_jet_truthflav!
TBranch*b_lbn!
TBranch*b_leptonic!
TBranch*b_leptonic_2015!
TBranch*b_leptonic_2016!
TBranch*b_mcChannelNumber!
TBranch*b_met_met!
TBranch*b_met_phi!
TBranch*b_met_px!
TBranch*b_met_py!
TBranch*b_met_sumet!
TBranch*b_mu!
TBranch*b_mu_MT!
TBranch*b_mu_W_eta!
TBranch*b_mu_W_pT!
TBranch*b_mu_W_phi!
TBranch*b_mu_charge!
TBranch*b_mu_d0!
TBranch*b_mu_d0sig!
TBranch*b_mu_e!
TBranch*b_mu_eta!
TBranch*b_mu_n!
TBranch*b_mu_nu_eta!
TBranch*b_mu_nu_pT!
TBranch*b_mu_nu_phi!
TBranch*b_mu_phi!
TBranch*b_mu_pt!
TBranch*b_mu_ptcone30!
TBranch*b_mu_ptcone40!
TBranch*b_mu_ptvarcone30!
TBranch*b_mu_tight!
TBranch*b_mu_topoetcone20!
TBranch*b_mu_topoetcone30!
TBranch*b_mu_topoetcone40!
TBranch*b_mu_trigMatch!
TBranch*b_mu_true_eta!
TBranch*b_mu_true_origin!
TBranch*b_mu_true_originbkg!
TBranch*b_mu_true_pdg!
TBranch*b_mu_true_pt!
TBranch*b_mu_true_type!
TBranch*b_mu_true_typebkg!
TBranch*b_mu_z0!
TBranch*b_mu_z0sig!
TBranch*b_mufatJet!
TBranch*b_mufatJet_2015!
TBranch*b_mufatJet_2016!
TBranch*b_mujets!
TBranch*b_mujets_2015!
TBranch*b_mujets_2016!
TBranch*b_mumu!
TBranch*b_mumu_2015!
TBranch*b_mumu_2016!
TBranch*b_mumumu!
TBranch*b_mumumu_2015!
TBranch*b_mumumu_2016!
TBranch*b_npVtx!
TBranch*b_pTsys!
TBranch*b_runNumber!
TBranch*b_sigma_pTsys!
TBranch*b_tt_MC_b_from_t_eta!
TBranch*b_tt_MC_b_from_t_m!
TBranch*b_tt_MC_b_from_t_phi!
TBranch*b_tt_MC_b_from_t_pt!
TBranch*b_tt_MC_b_from_tbar_eta!
TBranch*b_tt_MC_b_from_tbar_m!
TBranch*b_tt_MC_b_from_tbar_phi!
TBranch*b_tt_MC_b_from_tbar_pt!
TBranch*b_tt_eventNumber!
TBranch*b_tt_runNumber!
TBranch*b_weight_bTagSF_70!
TBranch*b_weight_bTagSF_77!
TBranch*b_weight_bTagSF_85!
TBranch*b_weight_jvt!
TBranch*b_weight_leptonSF!
TBranch*b_weight_mc!
TBranch*b_weight_pileup!
TBranch*b_weight_sherpa_22_vjets!
Int_tfBtagSFVariationComponent
TStringfBtagSFVariationName
Int_tfD3PDversion
AtlEvtReaderD3PDSgTopR2::EDataTypefDataType
AtlEvent*AtlEvtReaderBase::fEventEvent object
Bool_tAtlEvtReaderD3PDBase::fIsMCLooks whether input file is MC or not
Int_tfIsSherpa22
TStringfJvtSFVariationName
TStringfLeptonSFVariationName
AtlSelector*AtlEvtReaderBase::fParentParent selector
Int_tfPeriodCount
TStringfPileupSFVariationName
Int_tAtlEvtReaderD3PDBase::fRunLastRun number of the previous run (needed for writing the trigger config dbase in case of D3PD input)
TStringfTreeName
AtlTriggerConf*fTriggerConfDbaseTrigger configuration dbase
TTree*fTriggerConfTreeTree to store the config dbase
TTree*fTruthTreeMC truth tree
Char_tv_HLT_e120_lhloose
Char_tv_HLT_e140_lhloose_nod0
Char_tv_HLT_e24_lhmedium_L1EM18VH
Char_tv_HLT_e24_lhmedium_L1EM20VH
Char_tv_HLT_e24_lhmedium_iloose_L1EM20VH
Char_tv_HLT_e26_lhtight_nod0_ivarloose
Char_tv_HLT_e60_lhmedium
Char_tv_HLT_e60_lhmedium_nod0
Char_tv_HLT_mu20_iloose_L1MU15
Char_tv_HLT_mu20_iloose_mu8noL1
Char_tv_HLT_mu26_ivarmedium
Char_tv_HLT_mu50
Float_tv_Ht
Float_tv_MT2
Float_tv_Vtxz
Int_tv_ee[2]
Int_tv_eee[2]
Int_tv_eemu[2]
Int_tv_efatJet[2]
Int_tv_ejets[2]
vector<float>*v_el_MT
vector<float>*v_el_W_eta
vector<float>*v_el_W_pT
vector<float>*v_el_W_phi
vector<float>*v_el_charge
vector<float>*v_el_d0
vector<float>*v_el_d0sig
vector<float>*v_el_e
vector<float>*v_el_eta
UInt_tv_el_n
vector<float>*v_el_nu_eta
vector<float>*v_el_nu_pT
vector<float>*v_el_nu_phi
vector<float>*v_el_phi
vector<float>*v_el_pt
vector<float>*v_el_ptcone30
vector<float>*v_el_ptcone40
vector<float>*v_el_ptvarcone20
vector<bool>*v_el_tight
vector<float>*v_el_topoetcone20
vector<float>*v_el_topoetcone30
vector<float>*v_el_topoetcone40
vector<bool>*v_el_trigMatch
vector<float>*v_el_true_eta
vector<int>*v_el_true_origin
vector<int>*v_el_true_originbkg
vector<int>*v_el_true_pdg
vector<float>*v_el_true_pt
vector<int>*v_el_true_type
vector<int>*v_el_true_typebkg
vector<float>*v_el_z0
vector<float>*v_el_z0sig
Int_tv_emu[2]
Int_tv_emumu[2]
ULong64_tv_eventNumber
boolv_genfilter_BHadron
boolv_genfilter_CHadronPt4Eta3
vector<float>*v_jet_e
vector<float>*v_jet_eta
vector<float>*v_jet_ip3dsv1
vector<char>*v_jet_isbtagged_70
vector<char>*v_jet_isbtagged_77
vector<char>*v_jet_isbtagged_85
vector<float>*v_jet_jvt
vector<float>*v_jet_m
vector<float>*v_jet_mv2c00
vector<float>*v_jet_mv2c10
vector<float>*v_jet_mv2c20
UInt_tv_jet_n
vector<float>*v_jet_phi
vector<float>*v_jet_pt
vector<int>*v_jet_truthflav
UInt_tv_lbn
Int_tv_leptonic[2]
UInt_tv_mcChannelNumber
Float_tv_met_met
Float_tv_met_phi
Float_tv_met_px
Float_tv_met_py
Float_tv_met_sumet
Float_tv_mu
vector<float>*v_mu_MT
vector<float>*v_mu_W_eta
vector<float>*v_mu_W_pT
vector<float>*v_mu_W_phi
vector<float>*v_mu_charge
vector<float>*v_mu_d0
vector<float>*v_mu_d0sig
vector<float>*v_mu_e
vector<float>*v_mu_eta
UInt_tv_mu_n
vector<float>*v_mu_nu_eta
vector<float>*v_mu_nu_pT
vector<float>*v_mu_nu_phi
vector<float>*v_mu_phi
vector<float>*v_mu_pt
vector<float>*v_mu_ptcone30
vector<float>*v_mu_ptcone40
vector<float>*v_mu_ptvarcone30
vector<bool>*v_mu_tight
vector<float>*v_mu_topoetcone20
vector<float>*v_mu_topoetcone30
vector<float>*v_mu_topoetcone40
vector<bool>*v_mu_trigMatch
vector<float>*v_mu_true_eta
vector<int>*v_mu_true_origin
vector<int>*v_mu_true_originbkg
vector<int>*v_mu_true_pdg
vector<float>*v_mu_true_pt
vector<int>*v_mu_true_type
vector<int>*v_mu_true_typebkg
vector<float>*v_mu_z0
vector<float>*v_mu_z0sig
Int_tv_mufatJet[2]
Int_tv_mujets[2]
Int_tv_mumu[2]
Int_tv_mumumu[2]
UInt_tv_npVtx
Float_tv_pTsys
UInt_tv_runNumber
Float_tv_sigma_pTsys
Float_tv_tt_MC_b_from_t_eta
Float_tv_tt_MC_b_from_t_m
Float_tv_tt_MC_b_from_t_phi
Float_tv_tt_MC_b_from_t_pt
Float_tv_tt_MC_b_from_tbar_eta
Float_tv_tt_MC_b_from_tbar_m
Float_tv_tt_MC_b_from_tbar_phi
Float_tv_tt_MC_b_from_tbar_pt
ULong64_tv_tt_eventNumber
UInt_tv_tt_runNumber
Float_tv_weight_bTagSF_70
vector<float>*v_weight_bTagSF_70_vec
Float_tv_weight_bTagSF_77
vector<float>*v_weight_bTagSF_77_vec
Float_tv_weight_bTagSF_85
vector<float>*v_weight_bTagSF_85_vec
Float_tv_weight_jvt
Float_tv_weight_leptonSF
Float_tv_weight_leptonSF_EL_SF_ID_DOWN
Float_tv_weight_leptonSF_EL_SF_ID_UP
Float_tv_weight_leptonSF_EL_SF_Isol_DOWN
Float_tv_weight_leptonSF_EL_SF_Isol_UP
Float_tv_weight_leptonSF_EL_SF_Reco_DOWN
Float_tv_weight_leptonSF_EL_SF_Reco_UP
Float_tv_weight_leptonSF_EL_SF_Trigger_DOWN
Float_tv_weight_leptonSF_EL_SF_Trigger_UP
Float_tv_weight_leptonSF_MU_SF_ID_STAT_DOWN
Float_tv_weight_leptonSF_MU_SF_ID_STAT_UP
Float_tv_weight_leptonSF_MU_SF_ID_SYST_DOWN
Float_tv_weight_leptonSF_MU_SF_ID_SYST_UP
Float_tv_weight_leptonSF_MU_SF_Isol_STAT_DOWN
Float_tv_weight_leptonSF_MU_SF_Isol_STAT_UP
Float_tv_weight_leptonSF_MU_SF_Isol_SYST_DOWN
Float_tv_weight_leptonSF_MU_SF_Isol_SYST_UP
Float_tv_weight_leptonSF_MU_SF_Trigger_STAT_DOWN
Float_tv_weight_leptonSF_MU_SF_Trigger_STAT_UP
Float_tv_weight_leptonSF_MU_SF_Trigger_SYST_DOWN
Float_tv_weight_leptonSF_MU_SF_Trigger_SYST_UP
Float_tv_weight_mc
Float_tv_weight_pileup
Float_tv_weight_sherpa_22_vjets

Class Charts

Inheritance Chart:
TObject
AtlEvtReaderBase
AtlEvtReaderD3PDBase
AtlEvtReaderD3PDSgTopR2

Function documentation

AtlEvtReaderD3PDSgTopR2(AtlSelector* parent, AtlEvtReaderD3PDSgTopR2::EDataType dataType, const char* D3PDversion, const char* systematicName, const char* treeNameSuffix)
 Default constructor

~AtlEvtReaderD3PDSgTopR2()
 Default destructor

Int_t GetEntry(TTree* t, Long64_t entry)
 Clear all branches and get tree entry

void ClearBranches()
 Clear all tree branches

void SetBranches(TTree* tree)
 Set branch addresses

Bool_t Notify()
 The Notify() function is called when a new file is opened.

void LoadTruthTree()
 Load the MC truth tree for a newly opened input file

void BuildEvent()
 Build A++ event from D3PD content

void BuildEventHeader()
 Build A++ event header

void BuildEnergySum()
 Build A++ energy sum

void BuildElectrons()
 Build list of A++ electrons

 The ID quality can be either tight or loose

void BuildMuons()
 Build list of A++ muons

 The ID quality can be either tight or loose

void BuildJets()
 Build A++ jets

void BuildFromTruthTree()
 Build MC truth information from truth tree

void BuildTriggerDecision()
 Build trigger information for the given event

 (currently HLT only)

void BuildTriggerConfig(UInt_t RunStart, UInt_t RunEnd)
 Build trigger configuration for the given run range

 The configuration os based on the list of branches. Ensure that
 all required trigger branches are enabled.

 For the moment only HLT items are supported.

 Clear old config
void Print(Option_t* option = "")
 Print event reader information

AtlEvtReaderD3PDSgTopR2(AtlSelector* parent, AtlEvtReaderD3PDSgTopR2::EDataType dataType, const char* D3PDversion, const char* systematicName, const char* treeNameSuffix)
InitialSumOfWeights_t GetInitialSumOfWeights(TFile* inputFile) const
char const * GetTreeName() const
{ return fTreeName.Data(); }
Bool_t IsMC() const
 Is DATA or MC ?