CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Stage1Layer2EGammaAlgorithmImpHI.cc
Go to the documentation of this file.
1 
18 
19 #include <bitset>
20 
21 using namespace std;
22 using namespace l1t;
23 
24 
25 Stage1Layer2EGammaAlgorithmImpHI::Stage1Layer2EGammaAlgorithmImpHI(CaloParamsHelper* params) : params_(params) {};
26 
28 
29 void verboseDumpEGammas(const std::vector<l1t::EGamma> &egs);
30 
31 void l1t::Stage1Layer2EGammaAlgorithmImpHI::processEvent(const std::vector<l1t::CaloEmCand> & EMCands,
32  const std::vector<l1t::CaloRegion> & regions,
33  const std::vector<l1t::Jet> * jets,
34  std::vector<l1t::EGamma>* egammas) {
35  int egEtaCut = params_->egEtaCut();
36 
37  std::vector<l1t::EGamma> *preSortEGammas = new std::vector<l1t::EGamma>();
38  std::vector<l1t::EGamma> *preGtEGammas = new std::vector<l1t::EGamma>();
39  std::vector<l1t::EGamma> *dumpEGammas = new std::vector<l1t::EGamma>();
40 
41  for(CaloEmCandBxCollection::const_iterator egCand = EMCands.begin();
42  egCand != EMCands.end(); egCand++) {
43 
44  int eg_et = egCand->hwPt();
45  int eg_eta = egCand->hwEta();
46  int eg_phi = egCand->hwPhi();
47  int index = (egCand->hwIso()*4 + egCand->hwQual()) ;
48 
49  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > egLorentz(0,0,0,0);
50 
51  int isoFlag = 0;
52  bool isinBarrel = false;
53  if((egEtaCut & (1<<eg_eta))>>eg_eta) {
54  isinBarrel = true;
55  }
56 
57  isoFlag = isinBarrel;
58  l1t::EGamma theEG(*&egLorentz, eg_et, eg_eta, eg_phi, index, isoFlag);
59  preSortEGammas->push_back(theEG);
60  }
61 
62  //EGammaToGtScales(params_, preSortEGammas, dumpEGammas);
63  //verboseDumpEGammas(*dumpEGammas);
64 
65  SortEGammas(preSortEGammas, preGtEGammas);
66  EGammaToGtScales(params_, preGtEGammas, egammas);
67 
68  const bool verbose = false;
69  const bool hex = true;
70  if(verbose)
71  {
72  if(hex)
73  {
74  std::cout << "EGammas" << std::endl;
75  l1t::EGamma aegammas[8];
76  for(std::vector<l1t::EGamma>::const_iterator itEgamma = egammas->begin();
77  itEgamma != egammas->end(); ++itEgamma){
78  aegammas[itEgamma - egammas->begin()] = *itEgamma;
79  }
80  //std::cout << "Egammas (hex)" << std::endl;
81  std::cout << std::hex << pack16bits(aegammas[0].hwPt(), aegammas[0].hwEta(), aegammas[0].hwPhi());
82  std::cout << " ";
83  std::cout << std::hex << pack16bits(aegammas[1].hwPt(), aegammas[1].hwEta(), aegammas[1].hwPhi());
84  std::cout << " ";
85  std::cout << std::hex << pack16bits(aegammas[4].hwPt(), aegammas[4].hwEta(), aegammas[4].hwPhi());
86  std::cout << " ";
87  std::cout << std::hex << pack16bits(aegammas[5].hwPt(), aegammas[5].hwEta(), aegammas[5].hwPhi());
88  std::cout << std::endl;
89  std::cout << std::hex << pack16bits(aegammas[2].hwPt(), aegammas[2].hwEta(), aegammas[2].hwPhi());
90  std::cout << " ";
91  std::cout << std::hex << pack16bits(aegammas[3].hwPt(), aegammas[3].hwEta(), aegammas[3].hwPhi());
92  std::cout << " ";
93  std::cout << std::hex << pack16bits(aegammas[6].hwPt(), aegammas[6].hwEta(), aegammas[6].hwPhi());
94  std::cout << " ";
95  std::cout << std::hex << pack16bits(aegammas[7].hwPt(), aegammas[7].hwEta(), aegammas[7].hwPhi());
96  std::cout << std::endl;
97  } else {
98  int cEGammas = 0;
99  int fEGammas = 0;
100  printf("EGammas Isolated\n");
101  for(std::vector<l1t::EGamma>::const_iterator itEGamma = egammas->begin();
102  itEGamma != egammas->end(); ++itEGamma){
103  if(itEGamma->hwIso() != 1) continue;
104  cEGammas++;
105  unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi());
106  cout << bitset<15>(packed).to_string() << endl;
107  if(cEGammas == 4) break;
108  }
109 
110  printf("EGammas Non-isolated\n");
111  //printf("pt\teta\tphi\n");
112  for(std::vector<l1t::EGamma>::const_iterator itEGamma = egammas->begin();
113  itEGamma != egammas->end(); ++itEGamma){
114  if(itEGamma->hwIso() != 0) continue;
115  fEGammas++;
116  unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi());
117  cout << bitset<15>(packed).to_string() << endl;
118  if(fEGammas == 4) break;
119  }
120  }
121  }
122 
123  delete preSortEGammas;
124  delete preGtEGammas;
125  delete dumpEGammas;
126 }
127 
128 void verboseDumpEGammas(const std::vector<l1t::EGamma> &jets)
129 {
130  // int fwPhi[18] = { 4,
131  // 3 ,
132  // 2 ,
133  // 1 ,
134  // 0 ,
135  // 17 ,
136  // 16 ,
137  // 15 ,
138  // 14 ,
139  // 13 ,
140  // 12 ,
141  // 11 ,
142  // 10 ,
143  // 9 ,
144  // 8 ,
145  // 7 ,
146  // 6 ,
147  // 5 };
148 
149  // int fwEta[22] = {0,
150  // 1,
151  // 2,
152  // 3,
153  // 0,
154  // 1,
155  // 2,
156  // 3,
157  // 4,
158  // 5,
159  // 6,
160  // 0,
161  // 1,
162  // 2,
163  // 3,
164  // 4,
165  // 5,
166  // 6,
167  // 0,
168  // 1,
169  // 2,
170  // 3};
171 
172 
173  std::cout << "pt eta phi" << std::endl;
174  for(std::vector<l1t::EGamma>::const_iterator itEGamma = jets.begin();
175  itEGamma != jets.end(); ++itEGamma){
176 
177  //std::cout << itEGamma->hwPt() << " ";
178  //std::cout << fwEta[itEGamma->hwEta()] << " " ;
179  //std::cout << fwPhi[itEGamma->hwPhi()] << " ";
180  //std::cout << itEGamma->hwEta() << " " ;
181  //std::cout << itEGamma->hwPhi() << std::endl;
182  //bool sign = (itEGamma->hwEta() < 11);
183  //std::cout << sign << std::endl;
184  std::cout << std::hex << pack16bitsEgammaSpecial(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()) << std::endl;
185 
186 
187  }
188 }
virtual void processEvent(const std::vector< l1t::CaloEmCand > &EMCands, const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::Jet > *jets, std::vector< l1t::EGamma > *egammas)
void EGammaToGtScales(CaloParamsHelper *params, const std::vector< l1t::EGamma > *input, std::vector< l1t::EGamma > *output)
unsigned int pack16bitsEgammaSpecial(int pt, int eta, int phi)
std::string to_string(const T &t)
Definition: Logger.cc:26
vector< PseudoJet > jets
void SortEGammas(std::vector< l1t::EGamma > *input, std::vector< l1t::EGamma > *output)
void verboseDumpEGammas(const std::vector< l1t::EGamma > &egs)
unsigned int pack15bits(int pt, int eta, int phi)
unsigned int pack16bits(int pt, int eta, int phi)
tuple cout
Definition: gather_cfg.py:121
std::vector< CaloEmCand >::const_iterator const_iterator
Definition: BXVector.h:16