1 #ifndef RecoParticleFlow_PFClusterProducer_PFClusterAlgo_h
2 #define RecoParticleFlow_PFClusterProducer_PFClusterAlgo_h
84 const std::vector<bool> & mask );
89 const std::vector<bool> & mask );
205 bool masked(
unsigned rhi)
const;
214 unsigned color(
unsigned rhi)
const;
217 bool isSeed(
unsigned rhi)
const;
220 std::auto_ptr< std::vector< reco::PFCluster > >&
clusters()
255 typedef std::map<unsigned, unsigned >::const_iterator
IDH;
256 typedef std::multimap<double, unsigned >::iterator
EH;
295 std::pair<double,double>
dCrack(
double phi,
double eta);
305 std::multimap<double, unsigned, std::greater<double> >
eRecHits_;
friend std::ostream & operator<<(std::ostream &out, const PFClusterAlgo &algo)
double posCalcP1() const
get p1 for position calculation
void setThreshCleanBarrel(double thresh)
set barrel clean threshold
void cleanRBXAndHPD(const reco::PFRecHitCollection &rechits)
Clean HCAL readout box noise and HPD discharge.
edm::Handle< reco::PFRecHitCollection > PFRecHitHandle
void setThreshDoubleSpikeEndcap(double thresh)
set endcap thresholds for double spike cleaning
std::multimap< double, unsigned >::iterator EH
int posCalcNCrystal_
number of crystals for position calculation
double showerSigma() const
get shower sigma
double threshEndcap_
endcap threshold
void setShowerSigma(double sigma)
set shower sigma for
double threshDoubleSpikeBarrel_
Barrel double-spike cleaning.
double threshBarrel() const
getters -------------------------------------------------——
void setPositionCalcType(const PositionCalcType &t)
void setPosCalcP1(double p1)
set p1 for position calculation
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
void doClustering(const reco::PFRecHitCollection &rechits)
perform clustering
const CaloSubdetectorGeometry * eb_geom
std::vector< unsigned > color_
color, for all rechits
void setPosCalcNCrystal(int n)
set number of crystals for position calculation (-1 all,5, or 9)
PFRecHitHandle rechitsHandle_
void setThreshSeedBarrel(double thresh)
set barrel seed threshold
unsigned detId() const
rechit detId
edm::StrictWeakOrdering< reco::PFRecHit > PFStrictWeakOrdering
void setS6S2DoubleSpikeEndcap(double cut)
std::pair< double, double > dCrack(double phi, double eta)
distance to a crack in the ECAL barrel in eta and phi direction
bool isSeed(unsigned rhi) const
const reco::PFRecHit & rechit(unsigned i, const reco::PFRecHitCollection &rechits)
double threshDoubleSpikeEndcap_
Endcap double-spike cleaning.
std::vector< PFRecHit > PFRecHitCollection
collection of PFRecHit objects
std::multimap< double, unsigned, std::greater< double > > eRecHits_
indices to rechits, sorted by decreasing E (not E_T)
std::vector< double > minS4S1Barrel_
bool operator()(reco::PFRecHit const &a, reco::PFRecHit const &b) const
double threshPtSeedEndcap_
void setThreshBarrel(double thresh)
setters -------------------------------------------------——
double threshPtSeedBarrel_
std::map< unsigned, unsigned >::const_iterator IDH
std::vector< SeedState > seedStates_
seed state, for all rechits
void setUseCornerCells(bool usecornercells)
activate use of cells with a common corner to build topo-clusters
std::vector< std::vector< unsigned > > topoClusters_
sets of cells having one common side, and energy over threshold
std::auto_ptr< std::vector< reco::PFRecHit > > pfRecHitsCleaned_
particle flow rechits cleaned
std::vector< bool > usedInTopo_
used in topo cluster? for all rechits
bool operator()(reco::PFRecHit const &a, unsigned b) const
void setThreshPtSeedBarrel(double thresh)
double threshSeedBarrel_
barrel seed threshold
std::set< unsigned > idUsedRecHits_
ids of rechits used in seed search
void setThreshSeedEndcap(double thresh)
set endcap seed threshold
edm::Handle< edm::View< reco::PFCluster > > PFClusterHandle
bool masked(unsigned rhi) const
std::vector< unsigned > seeds_
vector of indices for seeds.
void doClusteringWorker(const reco::PFRecHitCollection &rechits)
perform clustering
int posCalcNCrystal() const
get number of crystals for position calculation (-1 all,5, or 9)
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
bool operator()(unsigned a, reco::PFRecHit const &b) const
const CaloSubdetectorGeometry * preshower_geom
std::vector< bool > mask_
bool cleanRBXandHPDs_
option to clean HCAL RBX's and HPD's
std::auto_ptr< std::vector< reco::PFRecHit > > & rechitsCleaned()
void setNNeighbours(int n)
set number of neighbours for
double threshEndcap() const
get endcap threshold
void buildTopoClusters(const reco::PFRecHitCollection &rechits)
build topoclusters around seeds
void setS4S1CleanBarrel(const std::vector< double > &coeffs)
void setThreshPtSeedEndcap(double thresh)
std::auto_ptr< PositionCalc > eg_pos_calc
void setThreshPtEndcap(double thresh)
std::vector< double > minS4S1Endcap_
void setThreshEndcap(double thresh)
set endcap threshold
void findSeeds(const reco::PFRecHitCollection &rechits)
look for seeds
PFClusterAlgo()
constructor
void setThreshDoubleSpikeBarrel(double thresh)
set endcap thresholds for double spike cleaning
double threshCleanBarrel_
Barrel cleaning threshold and S4/S1 smallest fractiom.
bool debug_
debugging on/off
virtual ~PFClusterAlgo()
destructor
int nNeighbours_
number of neighbours
reco::PFRecHitRef createRecHitRef(const reco::PFRecHitCollection &rechits, unsigned rhi)
void buildTopoCluster(std::vector< unsigned > &cluster, unsigned rhi, const reco::PFRecHitCollection &rechits)
build a topocluster (recursive)
double minS6S2DoubleSpikeEndcap_
PositionCalcType which_pos_calc_
parameter for position calculation
double showerSigma_
sigma of shower (cm)
void paint(unsigned rhi, unsigned color=1)
paint a rechit with a color.
double parameter(Parameter paramtype, PFLayer::Layer layer, unsigned iCoeff=0, int iring0=0) const
double threshSeedBarrel() const
get barrel seed threshold
void setThreshPtBarrel(double thresh)
std::auto_ptr< std::vector< reco::PFCluster > > & clusters()
void setCleanRBXandHPDs(bool cleanRBXandHPDs)
Activate cleaning of HCAL RBX's and HPD's.
double threshBarrel_
barrel threshold
bool useCornerCells_
option to use cells with a common corner to build topo-clusters
void setS6S2DoubleSpikeBarrel(double cut)
static unsigned prodNum_
product number
void enableDebugging(bool debug)
set hits on which clustering will be performed
void setS4S1CleanEndcap(const std::vector< double > &coeffs)
void calculateClusterPosition(reco::PFCluster &cluster, reco::PFCluster &clusterwodepthcor, bool depcor=true, int posCalcNCrystal=0)
calculate position of a cluster
const CaloSubdetectorGeometry * ee_geom
std::auto_ptr< SortedPFRecHitCollection > sortedRecHits_
double threshSeedEndcap_
endcap seed threshold
std::auto_ptr< std::vector< reco::PFCluster > > pfClusters_
all clusters
void setEEGeom(const CaloSubdetectorGeometry *esh)
void setThreshCleanEndcap(double thresh)
set endcap clean threshold
void setEBGeom(const CaloSubdetectorGeometry *esh)
void setPosCalcW0(double w0)
void setHistos(TFile *file, TH2F *hB, TH2F *hE)
set endcap clean threshold
edm::SortedCollection< reco::PFRecHit > SortedPFRecHitCollection
void buildPFClusters(const std::vector< unsigned > &cluster, const reco::PFRecHitCollection &rechits)
build PFClusters from a topocluster
unsigned color(unsigned rhi) const
double minS6S2DoubleSpikeBarrel_
void setEGammaPosCalc(const edm::ParameterSet &conf)
double threshCleanEndcap_
Endcap cleaning threshold and S4/S1 smallest fractiom.
void setPreshowerGeom(const CaloSubdetectorGeometry *esh)
double threshSeedEndcap() const
get endcap seed threshold
int nNeighbours() const
get number of neighbours for