CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Stage1Layer2JetAlgorithmImpHI.cc
Go to the documentation of this file.
1 
8 // This example implements algorithm version 1 and 2.
9 
15 
16 using namespace std;
17 using namespace l1t;
18 
19 Stage1Layer2JetAlgorithmImpHI::Stage1Layer2JetAlgorithmImpHI(CaloParamsHelper* params) : params_(params) { };
20 
22 
23 void verboseDumpJets(const std::vector<l1t::Jet> &jets);
24 
25 void Stage1Layer2JetAlgorithmImpHI::processEvent(const std::vector<l1t::CaloRegion> & regions,
26  const std::vector<l1t::CaloEmCand> & EMCands,
27  std::vector<l1t::Jet> * jets,
28  std::vector<l1t::Jet> * preGtJets ){
29 
30  //std::vector<double> regionPUSParams = params_->regionPUSParams();
31  int jetThreshold = params_->jetSeedThreshold();
32 
33  unsigned int etaMask = params_->jetRegionMask();
34 
35  std::vector<l1t::CaloRegion> *subRegions = new std::vector<l1t::CaloRegion>();
36  std::vector<l1t::Jet> *unSortedJets = new std::vector<l1t::Jet>();
37  std::vector<l1t::Jet> *preGtEtaJets = new std::vector<l1t::Jet>();
38  std::vector<l1t::Jet> *preRankJets = new std::vector<l1t::Jet>();
39 
40  HICaloRingSubtraction(regions, subRegions, params_);
41  TwoByTwoFinder(jetThreshold, etaMask, subRegions, preRankJets);
42  //slidingWindowJetFinder(0, subRegions, unSortedJets);
43  JetToGtPtScales(params_, preRankJets, unSortedJets);
44  //verboseDumpJets(*unSortedJets);
45  SortJets(unSortedJets, preGtEtaJets);
46  JetToGtEtaScales(params_, preGtEtaJets, preGtJets);
47  JetToGtEtaScales(params_, preGtEtaJets, jets);
48  //JetToGtPtScales(params_, preGtJets, jets);
49 
50  delete subRegions;
51  delete unSortedJets;
52  delete preGtEtaJets;
53 
54  const bool verbose = false;
55  const bool hex = true;
56  if(verbose)
57  {
58  if(!hex)
59  {
60  int cJets = 0;
61  int fJets = 0;
62  printf("Jets Central\n");
63  //printf("pt\teta\tphi\n");
64  for(std::vector<l1t::Jet>::const_iterator itJet = jets->begin();
65  itJet != jets->end(); ++itJet){
66  if((itJet->hwQual() & 2) == 2) continue;
67  cJets++;
68  unsigned int packed = pack15bits(itJet->hwPt(), itJet->hwEta(), itJet->hwPhi());
69  cout << bitset<15>(packed).to_string() << endl;
70  if(cJets == 4) break;
71  }
72 
73  printf("Jets Forward\n");
74  //printf("pt\teta\tphi\n");
75  for(std::vector<l1t::Jet>::const_iterator itJet = jets->begin();
76  itJet != jets->end(); ++itJet){
77  if((itJet->hwQual() & 2) != 2) continue;
78  fJets++;
79  unsigned int packed = pack15bits(itJet->hwPt(), itJet->hwEta(), itJet->hwPhi());
80  cout << bitset<15>(packed).to_string() << endl;
81 
82  if(fJets == 4) break;
83  }
84  } else {
85  std::cout << "Jets" << std::endl;
86  l1t::Jet ajets[8];
87  for(std::vector<l1t::Jet>::const_iterator itJet = jets->begin();
88  itJet != jets->end(); ++itJet){
89  ajets[itJet - jets->begin()] = *itJet;
90  }
91  //std::cout << "Jets (hex)" << std::endl;
92  std::cout << std::hex << pack16bits(ajets[0].hwPt(), ajets[0].hwEta(), ajets[0].hwPhi());
93  std::cout << " ";
94  std::cout << std::hex << pack16bits(ajets[1].hwPt(), ajets[1].hwEta(), ajets[1].hwPhi());
95  std::cout << " ";
96  std::cout << std::hex << pack16bits(ajets[4].hwPt(), ajets[4].hwEta(), ajets[4].hwPhi());
97  std::cout << " ";
98  std::cout << std::hex << pack16bits(ajets[5].hwPt(), ajets[5].hwEta(), ajets[5].hwPhi());
99  std::cout << std::endl;
100  std::cout << std::hex << pack16bits(ajets[2].hwPt(), ajets[2].hwEta(), ajets[2].hwPhi());
101  std::cout << " ";
102  std::cout << std::hex << pack16bits(ajets[3].hwPt(), ajets[3].hwEta(), ajets[3].hwPhi());
103  std::cout << " ";
104  std::cout << std::hex << pack16bits(ajets[6].hwPt(), ajets[6].hwEta(), ajets[6].hwPhi());
105  std::cout << " ";
106  std::cout << std::hex << pack16bits(ajets[7].hwPt(), ajets[7].hwEta(), ajets[7].hwPhi());
107  std::cout << std::endl;
108  }
109  }
110 }
111 
112 void verboseDumpJets(const std::vector<l1t::Jet> &jets)
113 {
114  int fwPhi[18] = { 4,
115  3 ,
116  2 ,
117  1 ,
118  0 ,
119  17 ,
120  16 ,
121  15 ,
122  14 ,
123  13 ,
124  12 ,
125  11 ,
126  10 ,
127  9 ,
128  8 ,
129  7 ,
130  6 ,
131  5 };
132 
133  int fwEta[22] = {0,
134  1,
135  2,
136  3,
137  0,
138  1,
139  2,
140  3,
141  4,
142  5,
143  6,
144  0,
145  1,
146  2,
147  3,
148  4,
149  5,
150  6,
151  0,
152  1,
153  2,
154  3};
155 
156 
157  std::cout << "pt eta phi sign" << std::endl;
158  for(std::vector<l1t::Jet>::const_iterator itJet = jets.begin();
159  itJet != jets.end(); ++itJet){
160 
161  std::cout << itJet->hwPt() << " ";
162  std::cout << fwEta[itJet->hwEta()] << " " ;
163  std::cout << fwPhi[itJet->hwPhi()] << " ";
164  bool sign = (itJet->hwEta() < 11);
165  std::cout << sign << std::endl;
166 
167  }
168 }
virtual void processEvent(const std::vector< l1t::CaloRegion > &regions, const std::vector< l1t::CaloEmCand > &EMCands, std::vector< l1t::Jet > *jets, std::vector< l1t::Jet > *preGtJets)
double sign(double x)
void SortJets(std::vector< l1t::Jet > *input, std::vector< l1t::Jet > *output)
Definition: Jet.h:13
std::string to_string(const T &t)
Definition: Logger.cc:26
void verboseDumpJets(const std::vector< l1t::Jet > &jets)
void TwoByTwoFinder(const int, const int, const std::vector< l1t::CaloRegion > *regions, std::vector< l1t::Jet > *uncalibjets)
vector< PseudoJet > jets
void JetToGtEtaScales(CaloParamsHelper *params, const std::vector< l1t::Jet > *input, std::vector< l1t::Jet > *output)
void JetToGtPtScales(CaloParamsHelper *params, const std::vector< l1t::Jet > *input, std::vector< l1t::Jet > *output)
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
double jetSeedThreshold() const
void HICaloRingSubtraction(const std::vector< l1t::CaloRegion > &regions, std::vector< l1t::CaloRegion > *subRegions, CaloParamsHelper *params)
------------— For heavy ion ----------------------------------—