#ifndef PUPPICLEANCONTAINER_HH #define PUPPICLEANCONTAINER_HH #include "PUPPI/RecoObj.hh" #include "PUPPI/puppiParticle.hh" #include "PUPPI/puppiAlgoBin.hh" #include "fastjet/internal/base.hh" #include "fastjet/PseudoJet.hh" #include using namespace std; //...................... class puppiCleanContainer{ public: // basic constructor which takes input particles as RecoObj, the tracker eta extension and other two boolean info puppiCleanContainer(std::vector inParticles, // incoming particles of the event std::vector puppiAlgo, // vector with the definition of the puppi algorithm in different eta region (one for each eta) float minPuppiWeight = 0.01, // min puppi weight cut bool useExp = false // useDz vertex probability ); ~puppiCleanContainer(); // ----- get methods // get all the PF particles std::vector pfParticles() { return fPFParticles_; } // get all the PF charged from PV std::vector pvParticles() { return fChargedPV_; } // get all the PF charged from PU std::vector puParticles() { return fChargedNoPV_; } // get CHS particle collection std::vector pfchsParticles(){ return fPFchsParticles_; } // get puppi weight for all particles std::vector getPuppiWeights() { return fPuppiWeights_; }; // process puppi std::vector puppiEvent(); protected: void getRMSAvg(const int &, std::vector &, std::vector &); float goodVar (const fastjet::PseudoJet &, const std::vector &, const int &, const float &); void computeMedRMS(const int &); float compute(const float &, const std::vector &, const std::vector &, const std::vector &); // some get functions float getNeutralPtCut(const float&, const float&, const int&); std::vector getPuppiId(const float &, const float &, const std::vector &); bool isGoodPuppiId(const float &, const float &, const puppiAlgoBin &); float getChi2FromdZ(float); // other functions float var_within_R(const int &, const vector &, const fastjet::PseudoJet &, const float &); float pt_within_R(const std::vector &, const fastjet::PseudoJet &, const float &); fastjet::PseudoJet flow_within_R(const vector &, const fastjet::PseudoJet &, const float &); private: std::vector fRecoParticles_; std::vector fPFParticles_; std::vector fPFchsParticles_; std::vector fChargedPV_; std::vector fChargedNoPV_; std::vector puppiAlgo_; std::vector fPuppiWeights_; float fMinPuppiWeight_; float fPVFrac_; int fNPV_; bool fUseExp_ ; }; #endif