CMS 3D CMS Logo

SimG4HcalHitJetFinder.cc
Go to the documentation of this file.
1 // File: SimG4HcalHitJetFinder.cc
3 // Description: Jet finder class for SimG4HcalValidation
8 
9 #include <algorithm>
10 #include <cmath>
11 #include <iostream>
12 
13 SimG4HcalHitJetFinder::SimG4HcalHitJetFinder(double cone) : jetcone(cone) {}
14 
15 SimG4HcalHitJetFinder::~SimG4HcalHitJetFinder() { edm::LogInfo("ValidHcal") << "SimG4HcalHitJetFinder:: Deleting"; }
16 
17 void SimG4HcalHitJetFinder::setCone(double cone) { jetcone = cone; }
18 
19 void SimG4HcalHitJetFinder::setInput(std::vector<CaloHit> *hhit) { input = *hhit; }
20 
21 std::vector<SimG4HcalHitCluster> *SimG4HcalHitJetFinder::getClusters(bool hcal_only) {
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  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder::getClusters_1 - input : e " << itr->e() << " eta "
30  << itr->eta() << " 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  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder::getClusters_2 - input : e " << itr->e() << " eta "
37  << itr->eta() << " 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  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder:: First seed hit ..................\n" << (*itr_hits);
58  first_seed = j;
59  break;
60  }
61  }
62 
63  temp.push_back(cluster);
64 
65  std::vector<SimG4HcalHitCluster>::iterator itr_clus;
66 
67  for (j = 0, itr_hits = input.begin(); itr_hits != input.end(); j++, itr_hits++) {
68  int h_type = itr_hits->det(); // if desired HCAL hits (only) clusterfinding
69  if ((((h_type == static_cast<int>(HcalBarrel) || h_type == static_cast<int>(HcalEndcap) ||
70  h_type == static_cast<int>(HcalForward)) &&
71  hcal_only) ||
72  (!hcal_only)) &&
73  (j != first_seed)) {
74  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder:: ........... Consider hit ..................\n"
75  << (*itr_hits);
76 
77  int incl = 0; // if the hit is included in one of clusters
78 
79  int iclus;
80  for (itr_clus = temp.begin(), iclus = 0; itr_clus != temp.end(); itr_clus++, iclus++) {
81  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder::=======> Cluster " << iclus << "\n" << (*itr_clus);
82 
83  double d = rDist(&(*itr_clus), &(*itr_hits));
84  if (d < jetcone) {
85  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder:: -> associated ... ";
86  temp[iclus] += *itr_hits;
87  incl = 1;
88  break;
89  }
90  }
91 
92  // to here jumps "break"
93  if (incl == 0) {
95  cl += *itr_hits;
96  temp.push_back(cl);
97  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder:: ************ NEW CLUSTER !\n" << cl;
98  }
99  }
100  }
101 
102  clusvector = temp;
103  return &clusvector;
104 }
105 
106 double SimG4HcalHitJetFinder::rDist(const SimG4HcalHitCluster *cluster, const CaloHit *hit) const {
107  double etac = cluster->eta();
108  double phic = cluster->phi();
109 
110  double etah = hit->eta();
111  double phih = hit->phi();
112 
113  return rDist(etac, phic, etah, phih);
114 }
115 
116 double SimG4HcalHitJetFinder::rDist(const double etac, const double phic, const double etah, const double phih) const {
117  double delta_eta = etac - etah;
118  double delta_phi = phic - phih;
119 
120  if (phic < phih)
121  delta_phi = phih - phic;
122  if (delta_phi > M_PI)
123  delta_phi = 2 * M_PI - delta_phi;
124 
125  double tmp = sqrt(delta_eta * delta_eta + delta_phi * delta_phi);
126 
127  edm::LogVerbatim("ValidHcal") << "HcalHitJetFinder::rDist:\n Clus. eta, phi = " << etac << " " << phic
128  << "\n hit eta, phi = " << etah << " " << phih << " rDist = " << tmp;
129 
130  return tmp;
131 }
MessageLogger.h
SimG4HcalHitJetFinder::getClusters
std::vector< SimG4HcalHitCluster > * getClusters(bool)
Definition: SimG4HcalHitJetFinder.cc:21
SimG4HcalHitJetFinder::clusvector
std::vector< SimG4HcalHitCluster > clusvector
Definition: SimG4HcalHitJetFinder.h:27
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SimG4HcalHitJetFinder::~SimG4HcalHitJetFinder
virtual ~SimG4HcalHitJetFinder()
Definition: SimG4HcalHitJetFinder.cc:15
HcalBarrel
Definition: HcalAssistant.h:33
SimG4HcalHitJetFinder.h
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
SimG4HcalHitJetFinder::SimG4HcalHitJetFinder
SimG4HcalHitJetFinder(double cone=0.5)
Definition: SimG4HcalHitJetFinder.cc:13
SimG4HcalHitCluster::eta
double eta() const
Definition: SimG4HcalHitCluster.h:18
SimG4HcalHitJetFinder::input
std::vector< CaloHit > input
Definition: SimG4HcalHitJetFinder.h:26
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition: GetRecoTauVFromDQM_MC_cff.py:38
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
SimG4HcalHitCluster::phi
double phi() const
Definition: SimG4HcalHitCluster.h:19
SimG4HcalHitJetFinder::jetcone
double jetcone
Definition: SimG4HcalHitJetFinder.h:25
SimG4HcalHitJetFinder::setInput
void setInput(std::vector< CaloHit > *)
Definition: SimG4HcalHitJetFinder.cc:19
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
SimG4HcalHitJetFinder::setCone
void setCone(double)
Definition: SimG4HcalHitJetFinder.cc:17
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
CaloHit
Definition: CaloHit.h:12
HcalSubdetector.h
HcalForward
Definition: HcalAssistant.h:36
SimG4HcalHitJetFinder::rDist
double rDist(const SimG4HcalHitCluster *, const CaloHit *) const
Definition: SimG4HcalHitJetFinder.cc:106
HcalEndcap
Definition: HcalAssistant.h:34
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
SimG4HcalHitCluster
Definition: SimG4HcalHitCluster.h:12
HLT_FULL_cff.delta_phi
delta_phi
Definition: HLT_FULL_cff.py:11672
ztail.d
d
Definition: ztail.py:151
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HLT_FULL_cff.delta_eta
delta_eta
Definition: HLT_FULL_cff.py:11671
hit
Definition: SiStripHitEffFromCalibTree.cc:88