#ifndef ATLFMuonMaker_H #define ATLFMuonMaker_H ////////////////////////////////////////////////////////////////////////// // // // ATLFast MuonMaker class. // // // ////////////////////////////////////////////////////////////////////////// #ifndef ATLFMaker_H #include "ATLFMaker.h" #endif #include #include class ATLFMuonMaker : public ATLFMaker { protected: Int_t m_Nmuons; //Number of muons Float_t m_MinPT; //Minimum muon transverse momentun Float_t m_MaxEta; //Maximum muon eta Float_t m_RconeSep; //Min cone R separation from clusters for muon isolation Float_t m_RconeDep; //R cone for energy deposition Float_t m_MaxEdep; //Max energy deposition for isolation // Muons histograms TH1F *m_Mult; //muon multiplicity NOISOLATED TH1F *m_MultIsol; //muon multiplicity ISOLATED TH1F *m_MultHard; //muon multiplicity hard TH1F *m_MultHardIsol; //muon multiplicity hard + isol TH1F *m_PT; //(pT- pTcru) vers pT muon ISOLATED TH1F *m_Eta; //(eta-etacru) vers pT muon ISOLATED TH1F *m_Phi; //(phi-phicru) vers pT muon ISOLATED TH1F *m_Counter; //counter vers pT muon ISOLATED TH1F *m_Mass2mu; //mumu mass TH1F *m_Mass2musubst; //mumu mass subtract width TH1F *m_Mass4mu; //4mu mass // resolution histograms and data TFile *m_file; //!-file with resolution histograms TH2F *m_Resms; //!-temporary resolution histogram TH2F *m_Respr; //!-temporary resolution histogram TH2F *m_Refms; //!-temporary resolution histogram TH2F *m_Refpr; //!-temporary resolution histogram Float_t m_dEta; // resolution-calculations data Float_t m_dPhi; // resolution-calculations data Float_t m_minEta; // resolution-calculations data Float_t m_maxEta; // resolution-calculations data Float_t m_minPhi; // resolution-calculations data Float_t m_maxPhi; // resolution-calculations data Int_t m_nEta; // resolution-calculations data Int_t m_nPhi; // resolution-calculations data private: Float_t ResolMuo(Int_t keyfun,Float_t &pt, Float_t &eta, Float_t &phi); Float_t Delosmu(Float_t &pt, Float_t &eta); public: ATLFMuonMaker(); ATLFMuonMaker(const char *name, const char *title); virtual ~ATLFMuonMaker(); virtual void AddMuon(Int_t code, Int_t mcparticle, Int_t mother, Int_t use, Int_t isol, Float_t eta, Float_t phi, Float_t pt, Int_t trigger); virtual void Clear(Option_t *option=""); virtual void Finish(); virtual void Init(); virtual Int_t Make(); Float_t MuonResolution(Int_t keymuo, Int_t keyfun, Float_t pt, Float_t eta, Float_t phi); virtual void PrintInfo(); // Getters Int_t Nmuons() {return m_Nmuons;} Float_t MinPT() {return m_MinPT;} Float_t MaxEta() {return m_MaxEta;} Float_t RconeSep() {return m_RconeSep;} Float_t RconeDep() {return m_RconeDep;} Float_t MaxEdep() {return m_MaxEdep;} TH1F *Mult() {return m_Mult;} TH1F *MultIsol() {return m_MultIsol;} TH1F *MultHard() {return m_MultHard;} TH1F *MultHardIsol() {return m_MultHardIsol;} TH1F *PT() {return m_PT;} TH1F *Eta() {return m_Eta;} TH1F *Phi() {return m_Phi;} TH1F *Counter() {return m_Counter;} TH1F *Mass2mu() {return m_Mass2mu;} TH1F *Mass2musubst() {return m_Mass2musubst;} TH1F *Mass4mu() {return m_Mass4mu;} // Setters void SetMinPT(Float_t val=6.) {m_MinPT=val;} void SetMaxEta(Float_t val=2.5) {m_MaxEta=val;} void SetRconeSep(Float_t val=0.4) {m_RconeSep=val;} void SetRconeDep(Float_t val=0.2) {m_RconeDep=val;} void SetMaxEdep(Float_t val=10.) {m_MaxEdep=val;} ClassDef(ATLFMuonMaker, 1) //ATLFast MuonMaker }; #endif