CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
SimG4HcalHitJetFinder Class Reference

#include <SimG4HcalHitJetFinder.h>

Public Member Functions

std::vector< SimG4HcalHitCluster > * getClusters (bool)
 
double rDist (const SimG4HcalHitCluster *, const CaloHit *) const
 
double rDist (const double, const double, const double, const double) const
 
void setCone (double)
 
void setInput (std::vector< CaloHit > *)
 
 SimG4HcalHitJetFinder (double cone=0.5)
 
virtual ~SimG4HcalHitJetFinder ()
 

Private Attributes

std::vector< SimG4HcalHitClusterclusvector
 
std::vector< CaloHitinput
 
double jetcone
 

Detailed Description

Definition at line 13 of file SimG4HcalHitJetFinder.h.

Constructor & Destructor Documentation

SimG4HcalHitJetFinder::SimG4HcalHitJetFinder ( double  cone = 0.5)

Definition at line 13 of file SimG4HcalHitJetFinder.cc.

13 : jetcone(cone) {}
SimG4HcalHitJetFinder::~SimG4HcalHitJetFinder ( )
virtual

Definition at line 15 of file SimG4HcalHitJetFinder.cc.

15 { edm::LogInfo("ValidHcal") << "SimG4HcalHitJetFinder:: Deleting"; }

Member Function Documentation

std::vector< SimG4HcalHitCluster > * SimG4HcalHitJetFinder::getClusters ( bool  hcal_only)

Definition at line 21 of file SimG4HcalHitJetFinder.cc.

References GetRecoTauVFromDQM_MC_cff::cl, clusvector, edmIntegrityCheck::d, HcalBarrel, HcalEndcap, HcalForward, input, jetcone, LogDebug, rDist(), and groupFilesInBlocks::temp.

Referenced by SimG4HcalValidation::jetAnalysis().

21  {
22  clusvector.erase(clusvector.begin(), clusvector.end());
23  if (input.empty()) {
24  return &clusvector;
25  }
26 
27  std::vector<CaloHit>::iterator itr;
28  for (itr = input.begin(); itr != input.end(); itr++) {
29  LogDebug("ValidHcal") << "HcalHitJetFinder::getClusters_1 - input : e " << itr->e() << " eta " << itr->eta()
30  << " phi " << itr->phi() << " subdet " << itr->det();
31  }
32 
33  sort(input.begin(), input.end()); // sort input in descending order
34 
35  for (itr = input.begin(); itr != input.end(); itr++) {
36  LogDebug("ValidHcal") << "HcalHitJetFinder::getClusters_2 - input : e " << itr->e() << " eta " << itr->eta()
37  << " phi " << itr->phi() << " subdet " << itr->det();
38  }
39 
40  std::vector<SimG4HcalHitCluster> temp; // dummy container for clusters
41 
42  // first input hit -> first cluster
43 
44  CaloHit hit;
45  SimG4HcalHitCluster cluster;
46 
47  std::vector<CaloHit>::iterator itr_hits;
48 
49  int j, first_seed = 0;
50  for (j = 0, itr_hits = input.begin(); itr_hits != input.end(); j++, itr_hits++) {
51  int h_type = itr_hits->det(); // if desired HCAL hits (only) clusterfinding
52  if (((h_type == static_cast<int>(HcalBarrel) || h_type == static_cast<int>(HcalEndcap) ||
53  h_type == static_cast<int>(HcalForward)) &&
54  hcal_only) ||
55  (!hcal_only)) {
56  cluster += input[j];
57  LogDebug("ValidHcal") << "HcalHitJetFinder:: First seed hit "
58  << "..................\n"
59  << (*itr_hits);
60  first_seed = j;
61  break;
62  }
63  }
64 
65  temp.push_back(cluster);
66 
67  std::vector<SimG4HcalHitCluster>::iterator itr_clus;
68 
69  for (j = 0, itr_hits = input.begin(); itr_hits != input.end(); j++, itr_hits++) {
70  int h_type = itr_hits->det(); // if desired HCAL hits (only) clusterfinding
71  if ((((h_type == static_cast<int>(HcalBarrel) || h_type == static_cast<int>(HcalEndcap) ||
72  h_type == static_cast<int>(HcalForward)) &&
73  hcal_only) ||
74  (!hcal_only)) &&
75  (j != first_seed)) {
76  LogDebug("ValidHcal") << "HcalHitJetFinder:: ........... Consider hit"
77  << " ..................\n"
78  << (*itr_hits);
79 
80  int incl = 0; // if the hit is included in one of clusters
81 
82  int iclus;
83  for (itr_clus = temp.begin(), iclus = 0; itr_clus != temp.end(); itr_clus++, iclus++) {
84  LogDebug("ValidHcal") << "HcalHitJetFinder::=======> Cluster " << iclus << "\n" << (*itr_clus);
85 
86  double d = rDist(&(*itr_clus), &(*itr_hits));
87  if (d < jetcone) {
88  LogDebug("ValidHcal") << "HcalHitJetFinder:: -> associated ... ";
89  temp[iclus] += *itr_hits;
90  incl = 1;
91  break;
92  }
93  }
94 
95  // to here jumps "break"
96  if (incl == 0) {
98  cl += *itr_hits;
99  temp.push_back(cl);
100  LogDebug("ValidHcal") << "HcalHitJetFinder:: ************ NEW CLUSTER"
101  << " !\n"
102  << cl;
103  }
104  }
105  }
106 
107  clusvector = temp;
108  return &clusvector;
109 }
#define LogDebug(id)
std::vector< CaloHit > input
std::vector< SimG4HcalHitCluster > clusvector
double rDist(const SimG4HcalHitCluster *, const CaloHit *) const
double SimG4HcalHitJetFinder::rDist ( const SimG4HcalHitCluster cluster,
const CaloHit hit 
) const

Definition at line 111 of file SimG4HcalHitJetFinder.cc.

References SimG4HcalHitCluster::eta(), CaloHit::eta(), SimG4HcalHitCluster::phi(), and CaloHit::phi().

Referenced by SimG4HcalValidation::collectEnergyRdir(), getClusters(), and SimG4HcalValidation::jetAnalysis().

111  {
112  double etac = cluster->eta();
113  double phic = cluster->phi();
114 
115  double etah = hit->eta();
116  double phih = hit->phi();
117 
118  return rDist(etac, phic, etah, phih);
119 }
double phi() const
Definition: CaloHit.h:23
double eta() const
Definition: CaloHit.h:22
double rDist(const SimG4HcalHitCluster *, const CaloHit *) const
double SimG4HcalHitJetFinder::rDist ( const double  etac,
const double  phic,
const double  etah,
const double  phih 
) const

Definition at line 121 of file SimG4HcalHitJetFinder.cc.

References caloCompatibility_cff::delta_eta, caloCompatibility_cff::delta_phi, LogDebug, M_PI, mathSSE::sqrt(), and tmp.

121  {
122  double delta_eta = etac - etah;
123  double delta_phi = phic - phih;
124 
125  if (phic < phih)
126  delta_phi = phih - phic;
127  if (delta_phi > M_PI)
128  delta_phi = 2 * M_PI - delta_phi;
129 
130  double tmp = sqrt(delta_eta * delta_eta + delta_phi * delta_phi);
131 
132  LogDebug("ValidHcal") << "HcalHitJetFinder::rDist:\n"
133  << " Clus. eta, phi = " << etac << " " << phic << "\n"
134  << " hit eta, phi = " << etah << " " << phih << " rDist = " << tmp;
135 
136  return tmp;
137 }
#define LogDebug(id)
T sqrt(T t)
Definition: SSEVec.h:18
#define M_PI
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
void SimG4HcalHitJetFinder::setCone ( double  cone)

Definition at line 17 of file SimG4HcalHitJetFinder.cc.

References jetcone.

17 { jetcone = cone; }
void SimG4HcalHitJetFinder::setInput ( std::vector< CaloHit > *  hhit)

Definition at line 19 of file SimG4HcalHitJetFinder.cc.

References input.

Referenced by SimG4HcalValidation::jetAnalysis().

19 { input = *hhit; }
std::vector< CaloHit > input

Member Data Documentation

std::vector<SimG4HcalHitCluster> SimG4HcalHitJetFinder::clusvector
private

Definition at line 27 of file SimG4HcalHitJetFinder.h.

Referenced by getClusters().

std::vector<CaloHit> SimG4HcalHitJetFinder::input
private

Definition at line 26 of file SimG4HcalHitJetFinder.h.

Referenced by getClusters(), and setInput().

double SimG4HcalHitJetFinder::jetcone
private

Definition at line 25 of file SimG4HcalHitJetFinder.h.

Referenced by getClusters(), and setCone().