//____________________________________________________________________
//
// ATLAS event header
//
//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlEventHeader.cxx,v 1.31 2017/10/26 08:43:06 mergelm Exp $
// Copyright: 2008 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlEventHeader
#include <AtlEventHeader.h>
#endif
#include <TDatime.h>
#include <cmath>
#include <iostream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlEventHeader);
#endif

AtlEvtTreeInfo *AtlEventHeader::fgTreeInfo = 0;

//____________________________________________________________________

AtlEventHeader::AtlEventHeader()
    : fPreselectionFlags(-1)
    , fTruthFlavor(-1)
    , fJetVertexWeight(new AtlScaleFactor())
    , fLeptonWeight(new AtlScaleFactor())
    , fBtagWeight_MV2c10_70(new AtlScaleFactor())
    , fBtagWeight_MV2c10_77(new AtlScaleFactor())
    , fBtagWeight_MV2c10_85(new AtlScaleFactor())
    , fBtagWeight_MV2c20_77(new AtlScaleFactor())
    , fBtagWeight_MV2c20_85(new AtlScaleFactor()) {
    //
    // Default constructor
    //
}

//____________________________________________________________________

AtlEventHeader::~AtlEventHeader() {
    //
    // Default destructor
    //
    delete fBtagWeight_MV2c10_70;
    delete fBtagWeight_MV2c10_77;
    delete fBtagWeight_MV2c10_85;
    delete fBtagWeight_MV2c20_77;
    delete fBtagWeight_MV2c20_85;
    delete fLeptonWeight;
    delete fJetVertexWeight;
}

//____________________________________________________________________

void AtlEventHeader::Clear(Option_t *option) {
    //
    // Clear event header
    //
    fRunNr           = 0;
    fChannelNr       = 0;
    fHFOR_type       = -1;
    fEventNr         = 0;
    fLumiBlock       = 0;
    fBeamEnergy      = 0;
    fEventType       = kPhysics;
    fIsMC            = kFALSE;
    fPreTagEvtWeight = 1.;
    fTagEvtWeight    = 1.;
    fMCWeight        = 1.;
    fPileupWeight    = 1.;
    fZVtxWeight      = 1.;
    fTruthWeightCorrection = NAN;
    fActualIntPerXing     = 0;
    fAverageIntPerXing    = 0;
    fmcevt_pdf1 = 0;
    fmcevt_pdf2 = 0;
    fmcevt_pdf_id1 = 0;
    fmcevt_pdf_id2 = 0;
    fmcevt_pdf_scale = 0;
    fmcevt_pdf_x1 = 0;
    fmcevt_pdf_x2 = 0;
    fPreselectionFlags = -1;
    fTruthFlavor = -1;

    fJetVertexWeight->Clear();
    fLeptonWeight->Clear();
    fBtagWeight_MV2c10_70->Clear();
    fBtagWeight_MV2c10_77->Clear();
    fBtagWeight_MV2c10_85->Clear();
    fBtagWeight_MV2c20_77->Clear();
    fBtagWeight_MV2c20_85->Clear();
}

//____________________________________________________________________

void AtlEventHeader::Print(Option_t *option) const {
    //
    // Print object information
    //
    cout.width(25); cout << "Run : " << fRunNr << endl;
    cout.width(25); cout << "Event : " << fEventNr << endl;
    cout.width(25); cout << "Lumi Block : " << fLumiBlock << endl;
    cout.width(25); cout << "BeamEnergy : " << fBeamEnergy/1000. << " TeV" << endl;
    cout.width(25); cout << "AverageIntPerXing : " << fAverageIntPerXing << endl;
    cout.width(25); cout << "ActualIntPerXing  : " << fActualIntPerXing << endl;

    cout.width(25); cout  << "Event type : ";
    PrintEventType();
    cout << endl;
    cout.width(25); cout << "PreTag-Event weight : " << fPreTagEvtWeight << endl;
    cout.width(25); cout << "   Tag-Event weight : " << fTagEvtWeight << endl;
    cout << endl;
}

//____________________________________________________________________

void AtlEventHeader::PrintEventType() const {
    //
    // Print event type
    //
    if ( IsMC() ) {
	cout << "MC";
    } else {
	cout << "DATA";
    }
    if ( IsPhysics() )     cout << " physics run";
    if ( IsTestBeam() )    cout << " test-beam operation";
    if ( IsCalibration() ) cout << " calibration run";
    if ( IsCosmics() )     cout << " cosmics run";
}

//____________________________________________________________________

void AtlEventHeader::SetPreselectionFlags(ULong_t PreselectionFlags) {
    fPreselectionFlags = PreselectionFlags;
}

//____________________________________________________________________

void AtlEventHeader::SetTruthFlavor(Long_t TruthFlavor) {
    fTruthFlavor = TruthFlavor;
}
 AtlEventHeader.cxx:1
 AtlEventHeader.cxx:2
 AtlEventHeader.cxx:3
 AtlEventHeader.cxx:4
 AtlEventHeader.cxx:5
 AtlEventHeader.cxx:6
 AtlEventHeader.cxx:7
 AtlEventHeader.cxx:8
 AtlEventHeader.cxx:9
 AtlEventHeader.cxx:10
 AtlEventHeader.cxx:11
 AtlEventHeader.cxx:12
 AtlEventHeader.cxx:13
 AtlEventHeader.cxx:14
 AtlEventHeader.cxx:15
 AtlEventHeader.cxx:16
 AtlEventHeader.cxx:17
 AtlEventHeader.cxx:18
 AtlEventHeader.cxx:19
 AtlEventHeader.cxx:20
 AtlEventHeader.cxx:21
 AtlEventHeader.cxx:22
 AtlEventHeader.cxx:23
 AtlEventHeader.cxx:24
 AtlEventHeader.cxx:25
 AtlEventHeader.cxx:26
 AtlEventHeader.cxx:27
 AtlEventHeader.cxx:28
 AtlEventHeader.cxx:29
 AtlEventHeader.cxx:30
 AtlEventHeader.cxx:31
 AtlEventHeader.cxx:32
 AtlEventHeader.cxx:33
 AtlEventHeader.cxx:34
 AtlEventHeader.cxx:35
 AtlEventHeader.cxx:36
 AtlEventHeader.cxx:37
 AtlEventHeader.cxx:38
 AtlEventHeader.cxx:39
 AtlEventHeader.cxx:40
 AtlEventHeader.cxx:41
 AtlEventHeader.cxx:42
 AtlEventHeader.cxx:43
 AtlEventHeader.cxx:44
 AtlEventHeader.cxx:45
 AtlEventHeader.cxx:46
 AtlEventHeader.cxx:47
 AtlEventHeader.cxx:48
 AtlEventHeader.cxx:49
 AtlEventHeader.cxx:50
 AtlEventHeader.cxx:51
 AtlEventHeader.cxx:52
 AtlEventHeader.cxx:53
 AtlEventHeader.cxx:54
 AtlEventHeader.cxx:55
 AtlEventHeader.cxx:56
 AtlEventHeader.cxx:57
 AtlEventHeader.cxx:58
 AtlEventHeader.cxx:59
 AtlEventHeader.cxx:60
 AtlEventHeader.cxx:61
 AtlEventHeader.cxx:62
 AtlEventHeader.cxx:63
 AtlEventHeader.cxx:64
 AtlEventHeader.cxx:65
 AtlEventHeader.cxx:66
 AtlEventHeader.cxx:67
 AtlEventHeader.cxx:68
 AtlEventHeader.cxx:69
 AtlEventHeader.cxx:70
 AtlEventHeader.cxx:71
 AtlEventHeader.cxx:72
 AtlEventHeader.cxx:73
 AtlEventHeader.cxx:74
 AtlEventHeader.cxx:75
 AtlEventHeader.cxx:76
 AtlEventHeader.cxx:77
 AtlEventHeader.cxx:78
 AtlEventHeader.cxx:79
 AtlEventHeader.cxx:80
 AtlEventHeader.cxx:81
 AtlEventHeader.cxx:82
 AtlEventHeader.cxx:83
 AtlEventHeader.cxx:84
 AtlEventHeader.cxx:85
 AtlEventHeader.cxx:86
 AtlEventHeader.cxx:87
 AtlEventHeader.cxx:88
 AtlEventHeader.cxx:89
 AtlEventHeader.cxx:90
 AtlEventHeader.cxx:91
 AtlEventHeader.cxx:92
 AtlEventHeader.cxx:93
 AtlEventHeader.cxx:94
 AtlEventHeader.cxx:95
 AtlEventHeader.cxx:96
 AtlEventHeader.cxx:97
 AtlEventHeader.cxx:98
 AtlEventHeader.cxx:99
 AtlEventHeader.cxx:100
 AtlEventHeader.cxx:101
 AtlEventHeader.cxx:102
 AtlEventHeader.cxx:103
 AtlEventHeader.cxx:104
 AtlEventHeader.cxx:105
 AtlEventHeader.cxx:106
 AtlEventHeader.cxx:107
 AtlEventHeader.cxx:108
 AtlEventHeader.cxx:109
 AtlEventHeader.cxx:110
 AtlEventHeader.cxx:111
 AtlEventHeader.cxx:112
 AtlEventHeader.cxx:113
 AtlEventHeader.cxx:114
 AtlEventHeader.cxx:115
 AtlEventHeader.cxx:116
 AtlEventHeader.cxx:117
 AtlEventHeader.cxx:118
 AtlEventHeader.cxx:119
 AtlEventHeader.cxx:120
 AtlEventHeader.cxx:121
 AtlEventHeader.cxx:122
 AtlEventHeader.cxx:123
 AtlEventHeader.cxx:124
 AtlEventHeader.cxx:125
 AtlEventHeader.cxx:126
 AtlEventHeader.cxx:127
 AtlEventHeader.cxx:128
 AtlEventHeader.cxx:129
 AtlEventHeader.cxx:130
 AtlEventHeader.cxx:131
 AtlEventHeader.cxx:132
 AtlEventHeader.cxx:133
 AtlEventHeader.cxx:134
 AtlEventHeader.cxx:135
 AtlEventHeader.cxx:136
 AtlEventHeader.cxx:137
 AtlEventHeader.cxx:138
 AtlEventHeader.cxx:139
 AtlEventHeader.cxx:140
 AtlEventHeader.cxx:141
 AtlEventHeader.cxx:142
 AtlEventHeader.cxx:143
 AtlEventHeader.cxx:144
 AtlEventHeader.cxx:145
 AtlEventHeader.cxx:146