//____________________________________________________________________
//
// MC truth classifier class (see AnalysisTop)
// 
// For now only the truth particle origin information is contained,
// but the class can easily be extended.
//
//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlMCTruthClassifier.cxx,v 1.1 2016/11/29 18:05:17 kind Exp $
// Copyright: 2016 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlMCTruthClassifier
#include <AtlMCTruthClassifier.h>
#endif
#include <iostream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlMCTruthClassifier);
#endif

static const char* fgParticleOriginNames[AtlMCTruthClassifier::kNumParticleOrigin] = {
    "NonDefined",
    
    "SingleElec",
    "SingleMuon",
    "SinglePhot",
    "SingleTau",
	
    "PhotonConv",
    "DalitzDec",
    "ElMagProc",
    "Mu",
    "TauLep",
    "top",
    "QuarkWeakDec",
    "WBoson",
    "ZBoson",
    "Higgs",
    "HiggsMSSM",
    "HeavyBoson",
    "WBosonLRSM",
    "NuREle",
    "NuRMu",
    "NuRTau",
    "LQ",
    
    "SUSY",
    "LightMeson",
    "StrangeMeson",
    "CharmedMeson",
    "BottomMeson",
    "CCbarMeson",
    "JPsi",
    "BBbarMeson",
    "LightBaryon",
    "StrangeBaryon",
    "CharmedBaryon",
    "BottomBaryon",
    "PionDecay",
    "KaonDecay",
    "BremPhot",
    "PromptPhot",
    "UndrPhot",
    "ISRPhot",
    "FSRPhot",
    "NucReact",
    "PiZero",
    "DiBoson",
    "ZorHeavyBoson",
    "QCD"
};

//____________________________________________________________________

AtlMCTruthClassifier::AtlMCTruthClassifier() {
    //
    // Default constructor
    //
    fParticleOrigin = kNonDefined;
}

//____________________________________________________________________

AtlMCTruthClassifier::AtlMCTruthClassifier(EParticleOrigin ParticleOrigin) {
    //
    // Default constructor
    //
    fParticleOrigin = ParticleOrigin;
}

//____________________________________________________________________

AtlMCTruthClassifier::~AtlMCTruthClassifier() {
    //
    // Default destructor
    //
}

//____________________________________________________________________

void AtlMCTruthClassifier::Clear(Option_t *option) {
    //
    // Clear this object
    //
    fParticleOrigin = kNonDefined;
}

//____________________________________________________________________

const char* AtlMCTruthClassifier::GetParticleOriginName(EParticleOrigin ParticleOrigin) {
    //
    // Get human-readable name of particle origin
    //
    return fgParticleOriginNames[ParticleOrigin];
}

//____________________________________________________________________

AtlMCTruthClassifier::EParticleOrigin AtlMCTruthClassifier::GetParticleOriginByName(const char *name) {
    //
    // Get enum value for full name for particle origin
    //
    // In case no origin was found for the given name the value
    // kNonDefined is returned
    //
    for ( Int_t i = 0; i < kNumParticleOrigin; i++) {
        if ( strcasecmp(fgParticleOriginNames[i], name ) == 0 )
            return (EParticleOrigin)i;
    }
    return kNonDefined;
}



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