#ifndef ANASEARCHDEFINITIONS #define ANASEARCHDEFINITIONS #include #include enum flavor { fdata = 1, muon = 2, nue = 12, anue = -12 , numu = 13, anumu = -13 , nutau = 14, anutau=-14, undefined_flavor = 999}; enum channel { track = 1, shower = 2, double_bang = 3 , tracklike=4, undefined_channel = 9999 }; enum interaction { cc = 100, nc = 200 }; enum flavor_interaction {numuCC=1,numuNC,nueCC,nueNC,nutauNC,nutauCCshowerdecay,nutauCCmuondecay,anumuCC,anumuNC,anueCC,anueGLRES,anueNC,anutauNC,anutauCCshowerdecay,anutauCCmuondecay,muonmuon, undefined_interaction_flavor = 999}; inline vector get_flavor_interaction(flavor flav,vector fl_int){ vector fl_int_helper; vector fl_int_out; if ( flav == muon ) fl_int_helper = {muonmuon}; else if ( flav == numu ) fl_int_helper = {numuCC, numuNC}; else if ( flav == nue ) fl_int_helper = {nueCC, nueNC}; else if ( flav == anumu ) fl_int_helper = {anumuCC, anumuNC}; else if ( flav == anue ) fl_int_helper = {anueCC, anueNC, anueGLRES}; else if ( flav == nutau ) fl_int_helper = {nutauCCshowerdecay,nutauCCmuondecay, nutauNC}; else if ( flav == anutau ) fl_int_helper = {anutauCCshowerdecay,anutauCCmuondecay, anutauNC}; for ( auto fl_int_helper_i : fl_int_helper) { if ( std::find(fl_int.begin(), fl_int.end(),fl_int_helper_i) != fl_int.end() ){ // if (fl_int.find( fl_int_helper_i) != fl_int.end()){ fl_int_out.push_back(fl_int_helper_i); // } } } return fl_int_out; } inline vector get_flavor_from_flavor_interaction(vector fl_int){ vector flavs; flavor fl; for (auto fl_int_i :fl_int){ if(fl_int_i == anumuCC) fl=anumu; if(fl_int_i == numuCC) fl=numu; if(fl_int_i == anumuNC) fl=anumu; if(fl_int_i == numuNC) fl=numu; if(fl_int_i == anueCC) fl=anue; if(fl_int_i == nueCC) fl=nue; if(fl_int_i == anueNC) fl=anue; if(fl_int_i == nueNC)fl=nue; if(fl_int_i == anueGLRES) fl=anue; if(fl_int_i == anutauCCshowerdecay) fl=anutau; if(fl_int_i ==anutauCCmuondecay)fl=anutau; if(fl_int_i == anutauNC)fl=anutau; if(fl_int_i == nutauCCshowerdecay)fl=nutau; if(fl_int_i ==nutauCCmuondecay)fl=nutau; if(fl_int_i ==nutauNC)fl=nutau; if(fl_int_i ==muonmuon)fl=muon; if(std::find(flavs.begin(), flavs.end(),fl) != flavs.end()){ //do nothing }else{ flavs.push_back(fl); } } return flavs; } inline std::string flavor_name( flavor f ) { static std::map _map_ = { { fdata, "data" } , { muon, "muon" } , { nue, "nue" } , { anue, "anue" } , { numu, "numu" } , { anumu, "anumu" } , { nutau, "nutau" } , { anutau,"anutau"} , { undefined_flavor , "undefined_flavor" } }; if ( _map_.find( f ) == _map_.end() ) { fatal ("flavor_name function called with unknown flavor", f ); } return _map_[f]; } inline flavor flavor_from_name( string name ) { if ( name == "numu" ) return numu; if ( name == "anumu") return anumu; if ( name == "nue" ) return nue; if ( name == "anue") return anue; if ( name == "nutau" ) return nutau; if ( name == "anutau") return anutau; if ( name == "muon") return muon; return undefined_flavor; } inline flavor_interaction flavor_interaction_from_name( string name ) { if ( name == "numuCC" ) return numuCC; if ( name == "numuNC" ) return numuNC; if ( name == "anumuCC" ) return anumuCC; if ( name == "anumuNC" ) return anumuNC; if ( name == "nueCC" ) return nueCC; if ( name == "nueNC" ) return nueNC; if ( name == "anueCC" ) return anueCC; if ( name == "anueNC" ) return anueNC; if ( name == "anueGLRES" ) return anueGLRES; if ( name == "nutauCCshowerdecay" ) return nutauCCshowerdecay; if ( name == "nutauCCmuondecay" ) return nutauCCmuondecay; if ( name == "nutauNC" ) return nutauNC; if ( name == "anutauCCshowerdecay" ) return anutauCCshowerdecay; if ( name == "anutauCCmuondecay" ) return anutauCCmuondecay; if ( name == "anutauNC" ) return anutauNC; if ( name == "muon") return muonmuon; return undefined_interaction_flavor; } inline channel channel_from_name( string name ) { if (name == "track" ) return track; if (name == "tracklike" ) return tracklike; if (name == "shower") return shower; if (name == "double_bang") return double_bang; return undefined_channel; } inline std::string channel_name( channel c ) { if (c == track ) return "track"; if (c == tracklike ) return "tracklike"; if (c == shower) return "shower"; if (c == undefined_channel) return "undefined_channel"; return "unknown"; } inline std::string flavor_interaction_name( flavor_interaction fl_int ) { if (fl_int == numuCC ) return "numuCC"; if (fl_int == anumuCC ) return "anumuCC"; if (fl_int == numuNC ) return "numuNC"; if (fl_int == anumuNC ) return "anumuNC"; if (fl_int == nueCC ) return "nueCC"; if (fl_int == anueCC ) return "anueCC"; if (fl_int == nueNC ) return "nueNC"; if (fl_int == anueNC ) return "anueNC"; if (fl_int == anueGLRES ) return "anueGLRES"; if (fl_int == nutauCCmuondecay ) return "nutauCCmuondecay"; if (fl_int == nutauCCshowerdecay ) return "nutauCCshowerdecay"; if (fl_int == anutauCCmuondecay ) return "anutauCCmuondecay"; if (fl_int == anutauCCshowerdecay ) return "anutauCCshowerdecay"; if (fl_int == nutauNC ) return "nutauNC"; if (fl_int == anutauNC ) return "anutauNC"; if (fl_int == muonmuon ) return "muon"; return "unknown"; } #endif