CMS 3D CMS Logo

L1AnalysisDTTF.cc
Go to the documentation of this file.
1 #include <cmath>
3 #include <cmath>
4 
5 
7 {
8 }
9 
10 
12 {
13 
14 }
15 
17 {
18 
19  const L1MuDTChambPhContainer::Phi_Container *PhContainer = L1MuDTChambPhContainer->getContainer();
20 
21  dttf_.phSize = PhContainer->size();
22  int iphtr=0;
23  double pig=acos(-1);
24  for( L1MuDTChambPhContainer::Phi_Container::const_iterator
25  DTPhDigiItr = PhContainer->begin() ;
26  DTPhDigiItr != PhContainer->end() ;
27  ++DTPhDigiItr )
28  {
29  if((unsigned int) iphtr>maxDTPH-1) continue;
30  dttf_.phBx.push_back ( DTPhDigiItr->bxNum() - DTPhDigiItr->Ts2Tag()+1 );
31  dttf_.phWh.push_back ( DTPhDigiItr->whNum() );
32  dttf_.phSe.push_back ( DTPhDigiItr->scNum() );
33  dttf_.phSt.push_back ( DTPhDigiItr->stNum() );
34  dttf_.phAng.push_back ( DTPhDigiItr->phi() );
35  dttf_.phBandAng.push_back( DTPhDigiItr->phiB() );
36  double locphi = (((double)DTPhDigiItr->phi())/4096.0);
37  double newphi = locphi+(DTPhDigiItr->scNum()*(pig/6.));
38  if (newphi>2*pig) newphi-=2*pig;
39  if (newphi<0 ) newphi+=2*pig;
40  dttf_.phGlobPhi.push_back( newphi );
41  dttf_.phCode.push_back ( DTPhDigiItr->code() );
42  dttf_.phX.push_back ( DTPhDigiItr->scNum() );
43  dttf_.phY.push_back ( DTPhDigiItr->stNum()+4*(DTPhDigiItr->whNum()+2) );
44 
45  iphtr++;
46  }
47 
48 }
49 
50 
52 {
53 
54  const L1MuDTChambThContainer::The_Container* ThContainer = L1MuDTChambThContainer->getContainer();
55 
56  int ithtr=0;
57  dttf_.thSize = ThContainer->size();
58  dttf_.thTheta.ResizeTo(dttf_.thSize,7);
59  dttf_.thCode.ResizeTo(dttf_.thSize,7);
60 
61 
62  for( L1MuDTChambThContainer::The_Container::const_iterator
63  DTThDigiItr = ThContainer->begin() ;
64  DTThDigiItr != ThContainer->end() ;
65  ++DTThDigiItr )
66  {
67 
68  if((unsigned int) ithtr>maxDTTH-1) continue;
69  dttf_.thBx.push_back( DTThDigiItr->bxNum() + 1 );
70  dttf_.thWh.push_back( DTThDigiItr->whNum() );
71  dttf_.thSe.push_back( DTThDigiItr->scNum() );
72  dttf_.thSt.push_back( DTThDigiItr->stNum() );
73  dttf_.thX.push_back( DTThDigiItr->stNum()+4*(DTThDigiItr->whNum()+2) );
74 // int xpos = iwh*4+ist+1; ????
75  dttf_.thY.push_back( DTThDigiItr->scNum() );
77 
78  for (unsigned int j = 0; j < 7; j++)
79  {
80  dttf_.thTheta[ithtr][j] = DTThDigiItr->position(j);
81  dttf_.thCode[ithtr][j] = DTThDigiItr->code(j);
82  }
83 
84  ithtr++;
85 
86  }
87 }
88 
89 
91 {
92  double pig=acos(-1);
93  const L1MuDTTrackContainer::TrackContainer *tr = L1MuDTTrackContainer->getContainer();
94  int idttr = 0 ;
95  dttf_.trSize = tr->size();
96  for ( L1MuDTTrackContainer::TrackContainer::const_iterator i
97  = tr->begin(); i != tr->end(); ++i ) {
98  if((unsigned int)idttr>maxDTTR-1) continue;
99  dttf_.trBx.push_back( i->bx()+1 );
100  dttf_.trTag.push_back( i->TrkTag() );
101  dttf_.trQual.push_back( i->quality_packed() );
102  dttf_.trPtPck.push_back( i->pt_packed() );
103  dttf_.trPtVal.push_back( i->ptValue() );
104  dttf_.trPhiPck.push_back( i->phi_packed() );
105  dttf_.trPhiVal.push_back( i->phiValue() );
106  dttf_.trEtaPck.push_back( i->eta_packed() );
107  dttf_.trEtaVal.push_back( i->etaValue() );
108 
109  int phi_local = i->phi_packed();//range: 0 < phi_local < 31
110  if(phi_local > 15) phi_local -= 32; //range: -16 < phi_local < 15
111  double phi_global = (phi_local*(pig/72.))+((pig/6.)*i->scNum());// + 12*i->scNum(); //range: -16 < phi_global < 147
112  if(phi_global < 0) phi_global+=2*pig; //range: 0 < phi_global < 147
113  if(phi_global > 2*pig) phi_global-=2*pig; //range: 0 < phi_global < 143
114  dttf_.trPhiGlob.push_back( phi_global );
115  dttf_.trChPck.push_back( i->charge_packed() );
116  dttf_.trWh.push_back( i->whNum() );
117  dttf_.trSc.push_back( i->scNum() );
118  unsigned int addresses=0;
119  for (int KK = 0; KK<4; KK++){
120  addresses|=((unsigned int)(i->stNum(KK+1))<<(KK*4));
121  }
122  dttf_.trAddress.push_back(addresses);
123  idttr++;
124  }
125 
126 }
void SetDTPH(const edm::Handle< L1MuDTChambPhContainer > L1MuDTChambPhContainer, unsigned int maxDTPH)
The_Container const * getContainer() const
L1AnalysisDTTFDataFormat dttf_
std::vector< L1MuDTTrackCand > TrackContainer
std::vector< L1MuDTChambPhDigi > Phi_Container
std::vector< L1MuDTChambThDigi > The_Container
void SetDTTR(const edm::Handle< L1MuDTTrackContainer > L1MuDTTrackContainer, unsigned int maxDTTR)
Phi_Container const * getContainer() const
void SetDTTH(const edm::Handle< L1MuDTChambThContainer > L1MuDTChambThContainer, unsigned int maxDTTH)
TrackContainer const * getContainer() const