CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Stage1Layer2SingleTrackHI.cc
Go to the documentation of this file.
1 // Stage1Layer2SingleTrackHI.cc
2 // Authors: Michael Northup
3 // Alex Barbieri
4 //
5 // This is a special-purpose single-track seed trigger which uses the
6 // Tau channel to communicate with GT. Be wary of any naming scheme
7 // because we are masquerading as both a tau and track trigger when
8 // we are really just looking for the hottest region.
9 
10 
13 
17 
18 
20 
22 
23 void findRegions(const std::vector<l1t::CaloRegion> * sr, std::vector<l1t::Tau> * t, const int etaMask);
24 
25 void l1t::Stage1Layer2SingleTrackHI::processEvent(const std::vector<l1t::CaloEmCand> & clusters,
26  const std::vector<l1t::CaloRegion> & regions,
27  std::vector<l1t::Tau> * isoTaus,
28  std::vector<l1t::Tau> * taus)
29 {
30  int etaMask = params_->tauRegionMask();
31 
32  std::vector<l1t::CaloRegion> *subRegions = new std::vector<l1t::CaloRegion>();
33  std::vector<l1t::Tau> *preGtEtaTaus = new std::vector<l1t::Tau>();
34  std::vector<l1t::Tau> *preGtTaus = new std::vector<l1t::Tau>();
35  std::vector<l1t::Tau> *unsortedTaus = new std::vector<l1t::Tau>();
36 
37 
38  HICaloRingSubtraction(regions, subRegions, params_);
39  findRegions(subRegions, preGtTaus, etaMask);
40  TauToGtPtScales(params_, preGtTaus, unsortedTaus);
41  SortTaus(unsortedTaus, preGtEtaTaus);
42  //SortTaus(preGtTaus, unsortedTaus);
43  //TauToGtPtScales(params_, unsortedTaus, preGtEtaTaus);
44  TauToGtEtaScales(params_, preGtEtaTaus, taus);
45 
46  delete subRegions;
47  delete preGtTaus;
48 
49  isoTaus->resize(4);
50  //taus->resize(4);
51 
52  const bool verbose = false;
53  const bool hex = true;
54  if(verbose)
55  {
56  if(hex)
57  {
58  std::cout << "Taus" << std::endl;
59  l1t::Tau ataus[8];
60  for(std::vector<l1t::Tau>::const_iterator itTau = taus->begin();
61  itTau != taus->end(); ++itTau){
62  ataus[itTau - taus->begin()] = *itTau;
63  }
64  //std::cout << "Taus (hex)" << std::endl;
65  std::cout << std::hex << pack16bits(ataus[0].hwPt(), ataus[0].hwEta(), ataus[0].hwPhi());
66  std::cout << " ";
67  std::cout << std::hex << pack16bits(ataus[1].hwPt(), ataus[1].hwEta(), ataus[1].hwPhi());
68  // std::cout << " ";
69  // std::cout << std::hex << pack16bits(ataus[4].hwPt(), ataus[4].hwEta(), ataus[4].hwPhi());
70  // std::cout << " ";
71  // std::cout << std::hex << pack16bits(ataus[5].hwPt(), ataus[5].hwEta(), ataus[5].hwPhi());
72  std::cout << std::endl;
73  std::cout << std::hex << pack16bits(ataus[2].hwPt(), ataus[2].hwEta(), ataus[2].hwPhi());
74  std::cout << " ";
75  std::cout << std::hex << pack16bits(ataus[3].hwPt(), ataus[3].hwEta(), ataus[3].hwPhi());
76  // std::cout << " ";
77  // std::cout << std::hex << pack16bits(ataus[6].hwPt(), ataus[6].hwEta(), ataus[6].hwPhi());
78  // std::cout << " ";
79  // std::cout << std::hex << pack16bits(ataus[7].hwPt(), ataus[7].hwEta(), ataus[7].hwPhi());
80  std::cout << std::endl;
81  } else {
82  std::cout << "Taus" << std::endl;
83  for(std::vector<l1t::Tau>::const_iterator iTau = taus->begin(); iTau != taus->end(); ++iTau)
84  {
85  unsigned int packed = pack15bits(iTau->hwPt(), iTau->hwEta(), iTau->hwPhi());
86  std::cout << bitset<15>(packed).to_string() << std::endl;
87  }
88  std::cout << "Isolated Taus" << std::endl;
89  for(std::vector<l1t::Tau>::const_iterator iTau = isoTaus->begin(); iTau != isoTaus->end(); ++iTau)
90  {
91  unsigned int packed = pack15bits(iTau->hwPt(), iTau->hwEta(), iTau->hwPhi());
92  std::cout << bitset<15>(packed).to_string() << std::endl;
93  }
94  }
95  }
96 }
97 
98 void findRegions(const std::vector<l1t::CaloRegion> * sr, std::vector<l1t::Tau> * t, const int etaMask)
99 {
100  for(std::vector<l1t::CaloRegion>::const_iterator region = sr->begin(); region != sr->end(); region++)
101  {
102  int tauEta = region->hwEta();
103  if(tauEta < 4 || tauEta > 17) continue; // taus CANNOT be in the forward region
104  if((etaMask & (1<<tauEta))>>tauEta) continue;
105 
106  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > TauLorentz(0,0,0,0);
107  l1t::Tau taucand(*&TauLorentz,region->hwPt(),region->hwEta(),region->hwPhi());
108 
109  t->push_back(taucand);
110  }
111 }
void TauToGtEtaScales(CaloParamsHelper *params, const std::vector< l1t::Tau > *input, std::vector< l1t::Tau > *output)
Definition: Tau.h:13
void SortTaus(std::vector< l1t::Tau > *input, std::vector< l1t::Tau > *output)
virtual void processEvent(const std::vector< l1t::CaloEmCand > &clusters, const std::vector< l1t::CaloRegion > &regions, std::vector< l1t::Tau > *isoTaus, std::vector< l1t::Tau > *taus)
std::string to_string(const T &t)
Definition: Logger.cc:26
void findRegions(const std::vector< l1t::CaloRegion > *sr, std::vector< l1t::Tau > *t, const int etaMask)
Stage1Layer2SingleTrackHI(CaloParamsHelper *params)
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
void TauToGtPtScales(CaloParamsHelper *params, const std::vector< l1t::Tau > *input, std::vector< l1t::Tau > *output)
void HICaloRingSubtraction(const std::vector< l1t::CaloRegion > &regions, std::vector< l1t::CaloRegion > *subRegions, CaloParamsHelper *params)
------------— For heavy ion ----------------------------------—