CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
L1Analysis::L1AnalysisCSCTF Class Reference

#include <L1AnalysisCSCTF.h>

Public Member Functions

L1AnalysisCSCTFDataFormatgetData ()
 
 L1AnalysisCSCTF ()
 
void Reset ()
 
void SetDTStubs (const edm::Handle< CSCTriggerContainer< csctf::TrackStub > > dtStubs)
 
void SetLCTs (const edm::Handle< CSCCorrelatedLCTDigiCollection > corrlcts, CSCSectorReceiverLUT *srLUTs_[5][2])
 
void SetStatus (const edm::Handle< L1CSCStatusDigiCollection > status)
 
void SetTracks (const edm::Handle< L1CSCTrackCollection > csctfTrks, const L1MuTriggerScales *ts, const L1MuTriggerPtScale *tpts, CSCSectorReceiverLUT *srLUTs_[5][2], CSCTFPtLUT *ptLUTs_)
 
 ~L1AnalysisCSCTF ()
 

Private Attributes

L1AnalysisCSCTFDataFormat csctf_
 

Detailed Description

Definition at line 31 of file L1AnalysisCSCTF.h.

Constructor & Destructor Documentation

L1Analysis::L1AnalysisCSCTF::L1AnalysisCSCTF ( )

Definition at line 5 of file L1AnalysisCSCTF.cc.

6 {
7 }
L1Analysis::L1AnalysisCSCTF::~L1AnalysisCSCTF ( )

Definition at line 9 of file L1AnalysisCSCTF.cc.

10 {
11 }

Member Function Documentation

L1AnalysisCSCTFDataFormat* L1Analysis::L1AnalysisCSCTF::getData ( void  )
inline

Definition at line 43 of file L1AnalysisCSCTF.h.

References csctf_.

43 {return &csctf_;}
L1AnalysisCSCTFDataFormat csctf_
void L1Analysis::L1AnalysisCSCTF::Reset ( )
inline
void L1Analysis::L1AnalysisCSCTF::SetDTStubs ( const edm::Handle< CSCTriggerContainer< csctf::TrackStub > >  dtStubs)

Definition at line 421 of file L1AnalysisCSCTF.cc.

References csctf_, L1Analysis::L1AnalysisCSCTFDataFormat::dtBX0, L1Analysis::L1AnalysisCSCTFDataFormat::dtBXN, L1Analysis::L1AnalysisCSCTFDataFormat::dtCAL, L1Analysis::L1AnalysisCSCTFDataFormat::dtFLAG, L1Analysis::L1AnalysisCSCTFDataFormat::dtPhiBend, L1Analysis::L1AnalysisCSCTFDataFormat::dtPhiPacked, L1Analysis::L1AnalysisCSCTFDataFormat::dtQuality, L1Analysis::L1AnalysisCSCTFDataFormat::dtSector, L1Analysis::L1AnalysisCSCTFDataFormat::dtSize, and L1Analysis::L1AnalysisCSCTFDataFormat::dtSubSector.

421  {
422  //get the vector of DT Stubs
423  std::vector<csctf::TrackStub> vstubs = dtStubs->get();
424  //iterate through DT Stubs
425  for (std::vector<csctf::TrackStub>::const_iterator stub = vstubs.begin();
426  stub != vstubs.end(); stub++) {
427  csctf_.dtBXN.push_back(stub->BX());
428  csctf_.dtFLAG.push_back(stub->getStrip()); //getStrip() is actually the "FLAG" bit
429  csctf_.dtCAL.push_back(stub->getKeyWG()); //getKeyWG() is actually the "CAL" bit
430 
431  csctf_.dtSector.push_back( 6*(stub->endcap()-1) + stub->sector() );
432  csctf_.dtSubSector.push_back(stub->subsector());
433 
434  csctf_.dtBX0.push_back(stub->getBX0()); //it is unclear what this variable is...
435  csctf_.dtPhiBend.push_back(stub->getBend());
436  csctf_.dtPhiPacked.push_back(stub->phiPacked());
437  csctf_.dtQuality.push_back(stub->getQuality());
438  }
439 
440  csctf_.dtSize = vstubs.size();
441 }
std::vector< T > get() const
L1AnalysisCSCTFDataFormat csctf_
void L1Analysis::L1AnalysisCSCTF::SetLCTs ( const edm::Handle< CSCCorrelatedLCTDigiCollection corrlcts,
CSCSectorReceiverLUT srLUTs_[5][2] 
)

Definition at line 250 of file L1AnalysisCSCTF.cc.

References csctf_, makeMuonMisalignmentScenario::endcap, L1Analysis::L1AnalysisCSCTFDataFormat::lctBx, L1Analysis::L1AnalysisCSCTFDataFormat::lctBx0, L1Analysis::L1AnalysisCSCTFDataFormat::lctChamber, L1Analysis::L1AnalysisCSCTFDataFormat::lctCLCT_pattern, L1Analysis::L1AnalysisCSCTFDataFormat::lctEndcap, L1Analysis::L1AnalysisCSCTFDataFormat::lctFpga, L1Analysis::L1AnalysisCSCTFDataFormat::lctglobalEta, L1Analysis::L1AnalysisCSCTFDataFormat::lctglobalPhi, L1Analysis::L1AnalysisCSCTFDataFormat::lctlocalPhi, L1Analysis::L1AnalysisCSCTFDataFormat::lctQuality, L1Analysis::L1AnalysisCSCTFDataFormat::lctRing, L1Analysis::L1AnalysisCSCTFDataFormat::lctSector, L1Analysis::L1AnalysisCSCTFDataFormat::lctSize, L1Analysis::L1AnalysisCSCTFDataFormat::lctStation, L1Analysis::L1AnalysisCSCTFDataFormat::lctstripNum, L1Analysis::L1AnalysisCSCTFDataFormat::lctSubSector, L1Analysis::L1AnalysisCSCTFDataFormat::lctTriggerCSCID, L1Analysis::L1AnalysisCSCTFDataFormat::lctwireGroup, edm::Handle< T >::product(), and CSCTriggerNumbering::triggerSubSectorFromLabels().

251 {
252 
253  int nLCT=0;
255  corrLct = corrlcts.product()->begin();
256  corrLct != corrlcts.product()->end() ; corrLct++){
257 
258  nLCT++;
259 
260  int lctId = 0;
261 
263  corrlcts.product()->get((*corrLct).first);
264 
266  lct = lctRange.first ;
267  lct != lctRange.second; lct++, lctId++){
268 
269  csctf_.lctEndcap.push_back((*corrLct).first.zendcap());
270  if ((*corrLct).first.zendcap() > 0)
271  csctf_.lctSector.push_back((*corrLct).first.triggerSector());
272  else
273  csctf_.lctSector.push_back(6+(*corrLct).first.triggerSector());
274 
276  csctf_.lctBx.push_back(lct->getBX());
277  csctf_.lctBx0.push_back(lct->getBX0());
278 
279  csctf_.lctStation.push_back((*corrLct).first.station());
280  csctf_.lctRing.push_back((*corrLct).first.ring());
281  csctf_.lctChamber.push_back((*corrLct).first.chamber());
282  csctf_.lctTriggerCSCID.push_back((*corrLct).first.triggerCscId());
283  csctf_.lctFpga.push_back((csctf_.lctSubSector.back() ? csctf_.lctSubSector.back() : (*corrLct).first.station()+1));
284 
285 
286  // Check if DetId is within range
287  if( csctf_.lctSector.back() < 1 || csctf_.lctSector.back() > 12 ||
288  csctf_.lctStation.back() < 1 || csctf_.lctStation.back() > 4 ||
289  csctf_.lctTriggerCSCID.back() < 1 || csctf_.lctTriggerCSCID.back() > 9 ||
290  lctId < 0 || lctId > 1 ){
291 
292  edm::LogInfo("L1NtupleProducer")<<" LCT ERROR: CSC digi are out of range: ";
293 
294  continue;
295  }
296 
297  // handles not to overload the method: mostly for readability
298  int endcap = (*corrLct).first.zendcap();
299  if (endcap < 0) endcap = 0;
300 
301  int StationLct = (*corrLct).first.station();
302  int CscIdLct = (*corrLct).first.triggerCscId();
303  int SubSectorLct =
305 
306  int FPGALct = ( SubSectorLct ? SubSectorLct-1 : StationLct );
307 
308 
309  // local Phi
310  lclphidat lclPhi;
311 
312 /*
313  try {
314 
315  csctf_.lctstripNum.push_back(lct->getStrip());
316 
317 
318  csctf_.lctlocalPhi.push_back(lclPhi.phi_local);
319  }
320  catch(...) {
321  bzero(&lclPhi,sizeof(lclPhi));
322  csctf_.lctlocalPhi.push_back(-999);
323  }
324 
325 */
326  try {
327 
328  csctf_.lctstripNum.push_back(lct->getStrip());
329  lclPhi = srLUTs_[FPGALct][endcap] -> localPhi(lct->getStrip(),
330  lct->getPattern(),
331  lct->getQuality(),
332  lct->getBend() );
333 
334  csctf_.lctlocalPhi.push_back(lclPhi.phi_local);
335  //csctf_.lctlocalPhi_bend.push_back(lclPhi.phi_bend_local);
336  //csctf_.lctCLCT_pattern.push_back(lct->getPattern());
337  csctf_.lctQuality.push_back(lct->getQuality());
338  //std::cout <<"localPhi: lclPhi.phi_bend_local = " << lclPhi.phi_bend_local << std::endl;
339  //std::cout <<"localPhi: lct->getBend() = " << lct->getBend() << std::endl;
340 
341  }
342  catch(...) {
343  bzero(&lclPhi,sizeof(lclPhi));
344  csctf_.lctlocalPhi.push_back(-999);
345  //csctf_.lctlocalPhi_bend.push_back(-999);
346  //csctf_.lctCLCT_pattern.push_back(-999);
347  csctf_.lctQuality.push_back(-999);
348  }
349 
350  // Global Phi
351  gblphidat gblPhi;
352 
353  try {
354 
355  csctf_.lctwireGroup.push_back(lct->getKeyWG());
356 
357  //std::cout << "lclPhi.phi_local: " << lclPhi.phi_local << std::endl;
358  //std::cout << "lct->getKeyWG(): " << lct->getKeyWG() << std::endl;
359  //std::cout << "CscIdLct: " << CscIdLct << std::endl;
360 
361  gblPhi = srLUTs_[FPGALct][endcap] -> globalPhiME(lclPhi.phi_local ,
362  lct->getKeyWG(),
363  CscIdLct);
364  csctf_.lctglobalPhi.push_back(gblPhi.global_phi);
365 
366 
367  } catch(...) {
368  bzero(&gblPhi,sizeof(gblPhi));
369  csctf_.lctglobalPhi.push_back(-999);
370  }
371 
372  // Global Eta
373  gbletadat gblEta;
374 
375  try {
376  gblEta = srLUTs_[FPGALct][endcap] -> globalEtaME(lclPhi.phi_bend_local,
377  lclPhi.phi_local ,
378  lct->getKeyWG() ,
379  CscIdLct);
380  //std::cout <<"gblEta: lclPhi.phi_bend_local = " << lclPhi.phi_bend_local << std::endl;
381  csctf_.lctglobalEta.push_back(gblEta.global_eta);
382  csctf_.lctCLCT_pattern.push_back(gblEta.global_bend);
383  }
384  catch(...) {
385  bzero(&gblEta,sizeof(gblEta));
386  csctf_.lctglobalEta.push_back(-999);
387  csctf_.lctCLCT_pattern.push_back(-999);
388  }
389 
390  } // for(CSCCorrelatedLCTDigiCollection::const_iterator lct
391  } // for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator lct
392 
393  csctf_.lctSize = nLCT;
394 
395 }
L1AnalysisCSCTFDataFormat csctf_
T const * product() const
Definition: Handle.h:74
class global_phi_data gblphidat
std::vector< DigiType >::const_iterator const_iterator
class local_phi_data lclphidat
Data Types.
static int triggerSubSectorFromLabels(int station, int chamber)
std::pair< const_iterator, const_iterator > Range
class global_eta_data gbletadat
void L1Analysis::L1AnalysisCSCTF::SetStatus ( const edm::Handle< L1CSCStatusDigiCollection status)

Definition at line 398 of file L1AnalysisCSCTF.cc.

References csctf_, L1Analysis::L1AnalysisCSCTFDataFormat::nsp, L1Analysis::L1AnalysisCSCTFDataFormat::stL1A_BXN, L1Analysis::L1AnalysisCSCTFDataFormat::stOrbCounter, L1Analysis::L1AnalysisCSCTFDataFormat::stSPslot, and L1Analysis::L1AnalysisCSCTFDataFormat::stTrkCounter.

399 {
400  int nStat=0;
401  for(std::vector<L1CSCSPStatusDigi>::const_iterator stat=status->second.begin();
402  stat!=status->second.end(); stat++){
403 
404  // fill the Ntuple
405  if (stat->VPs() != 0) {
406 
407  csctf_.stSPslot.push_back(stat->slot());
408  csctf_.stL1A_BXN.push_back(stat->BXN());
409  csctf_.stTrkCounter.push_back((const_cast<L1CSCSPStatusDigi*>(&(*stat)))->track_counter());
410  csctf_.stOrbCounter.push_back((const_cast<L1CSCSPStatusDigi*>(&(*stat)))->orbit_counter());
411 
412  nStat++;
413  }
414  }
415 
416  csctf_.nsp = nStat;
417 }
L1AnalysisCSCTFDataFormat csctf_
std::vector< unsigned long int > stOrbCounter
std::vector< unsigned long int > stTrkCounter
void L1Analysis::L1AnalysisCSCTF::SetTracks ( const edm::Handle< L1CSCTrackCollection csctfTrks,
const L1MuTriggerScales ts,
const L1MuTriggerPtScale tpts,
CSCSectorReceiverLUT srLUTs_[5][2],
CSCTFPtLUT ptLUTs_ 
)

Definition at line 15 of file L1AnalysisCSCTF.cc.

References csctf_, makeMuonMisalignmentScenario::endcap, L1MuScale::getCenter(), L1MuScale::getLowEdge(), L1MuTriggerScales::getPhiScale(), L1MuTriggerPtScale::getPtScale(), L1MuTriggerScales::getRegionalEtaScale(), Pi, CSCTFPtLUT::Pt(), edm::second(), L1Analysis::L1AnalysisCSCTFDataFormat::trBx, L1Analysis::L1AnalysisCSCTFDataFormat::trCharge, L1Analysis::L1AnalysisCSCTFDataFormat::trChargeValid, L1Analysis::L1AnalysisCSCTFDataFormat::trEndcap, L1Analysis::L1AnalysisCSCTFDataFormat::trEta, L1Analysis::L1AnalysisCSCTFDataFormat::trEtaBit, L1Analysis::L1AnalysisCSCTFDataFormat::trForR, CSCTriggerNumbering::triggerSubSectorFromLabels(), L1Analysis::L1AnalysisCSCTFDataFormat::trLctBx, L1Analysis::L1AnalysisCSCTFDataFormat::trLctBx0, L1Analysis::L1AnalysisCSCTFDataFormat::trLctChamber, L1Analysis::L1AnalysisCSCTFDataFormat::trLctCLCT_pattern, L1Analysis::L1AnalysisCSCTFDataFormat::trLctEndcap, L1Analysis::L1AnalysisCSCTFDataFormat::trLctFpga, L1Analysis::L1AnalysisCSCTFDataFormat::trLctglobalEta, L1Analysis::L1AnalysisCSCTFDataFormat::trLctglobalPhi, L1Analysis::L1AnalysisCSCTFDataFormat::trLctlocalPhi, L1Analysis::L1AnalysisCSCTFDataFormat::trLctQuality, L1Analysis::L1AnalysisCSCTFDataFormat::trLctRing, L1Analysis::L1AnalysisCSCTFDataFormat::trLctSector, L1Analysis::L1AnalysisCSCTFDataFormat::trLctStation, L1Analysis::L1AnalysisCSCTFDataFormat::trLctstripNum, L1Analysis::L1AnalysisCSCTFDataFormat::trLctSubSector, L1Analysis::L1AnalysisCSCTFDataFormat::trLctTriggerCSCID, L1Analysis::L1AnalysisCSCTFDataFormat::trLctwireGroup, L1Analysis::L1AnalysisCSCTFDataFormat::trMB1ID, L1Analysis::L1AnalysisCSCTFDataFormat::trMB1TBin, L1Analysis::L1AnalysisCSCTFDataFormat::trME1ID, L1Analysis::L1AnalysisCSCTFDataFormat::trME1TBin, L1Analysis::L1AnalysisCSCTFDataFormat::trME2ID, L1Analysis::L1AnalysisCSCTFDataFormat::trME2TBin, L1Analysis::L1AnalysisCSCTFDataFormat::trME3ID, L1Analysis::L1AnalysisCSCTFDataFormat::trME3TBin, L1Analysis::L1AnalysisCSCTFDataFormat::trME4ID, L1Analysis::L1AnalysisCSCTFDataFormat::trME4TBin, L1Analysis::L1AnalysisCSCTFDataFormat::trMode, L1Analysis::L1AnalysisCSCTFDataFormat::trNumLCTs, L1Analysis::L1AnalysisCSCTFDataFormat::trOutputLink, L1Analysis::L1AnalysisCSCTFDataFormat::trPhi, L1Analysis::L1AnalysisCSCTFDataFormat::trPhi12, L1Analysis::L1AnalysisCSCTFDataFormat::trPhi23, L1Analysis::L1AnalysisCSCTFDataFormat::trPhi_02PI, L1Analysis::L1AnalysisCSCTFDataFormat::trPhiBit, L1Analysis::L1AnalysisCSCTFDataFormat::trPhiSign, L1Analysis::L1AnalysisCSCTFDataFormat::trPt, L1Analysis::L1AnalysisCSCTFDataFormat::trPtBit, L1Analysis::L1AnalysisCSCTFDataFormat::trQuality, L1Analysis::L1AnalysisCSCTFDataFormat::trSector, and L1Analysis::L1AnalysisCSCTFDataFormat::trSize.

19 {
20 
21  //for (int i =0; i<MAXCSCTFTR; i++) csctf_.trSector[i]=0;
22 
23  csctf_.trSize = csctfTrks->size();
24  //cout << " csctf_.trSize: " << csctf_.trSize << endl;
25 
26  int nTrk=0;
27  for(L1CSCTrackCollection::const_iterator trk=csctfTrks->begin();
28  trk<csctfTrks->end(); trk++){
29 
30  nTrk++;
31 
32  // trk->first.endcap() = 2 for - endcap
33  // = 1 for + endcap
34  csctf_.trEndcap.push_back(trk->first.endcap()==2 ? trk->first.endcap()-3 : trk->first.endcap());
35  //sectors: 1->6 (plus endcap), 7->12 (minus endcap)
36  csctf_.trSector.push_back(6* (trk->first.endcap()-1) + trk->first.sector());
37  csctf_.trBx.push_back(trk->first.BX());
38 
39  csctf_.trME1ID.push_back(trk->first.me1ID());
40  csctf_.trME2ID.push_back(trk->first.me2ID());
41  csctf_.trME3ID.push_back(trk->first.me3ID());
42  csctf_.trME4ID.push_back(trk->first.me4ID());
43  csctf_.trMB1ID.push_back(trk->first.mb1ID());
44 
45  csctf_.trME1TBin.push_back(trk->first.me1Tbin());
46  csctf_.trME2TBin.push_back(trk->first.me2Tbin());
47  csctf_.trME3TBin.push_back(trk->first.me3Tbin());
48  csctf_.trME4TBin.push_back(trk->first.me4Tbin());
49  csctf_.trMB1TBin.push_back(trk->first.mb1Tbin());
50 
51  // output link of the track
52  csctf_.trOutputLink.push_back(trk->first.outputLink());
53 
54  // PtAddress gives an handle on other parameters
55  ptadd thePtAddress(trk->first.ptLUTAddress());
56 
57  csctf_.trPhiSign.push_back(thePtAddress.delta_phi_sign);
58  csctf_.trPhi12.push_back(thePtAddress.delta_phi_12);
59  csctf_.trPhi23.push_back(thePtAddress.delta_phi_23);
60  csctf_.trMode.push_back(thePtAddress.track_mode);
61  csctf_.trForR.push_back(thePtAddress.track_fr);
62  csctf_.trCharge.push_back(trk->first.chargeValue());
63 
64 
65  //Pt needs some more workaround since it is not in the unpacked data
67  ptdat thePtData = ptLUTs_->Pt(thePtAddress);
68 
69  // front or rear bit?
70  if (thePtAddress.track_fr) {
71  csctf_.trPtBit.push_back(thePtData.front_rank&0x1f);
72  csctf_.trQuality.push_back((thePtData.front_rank>>5)&0x3);
73  csctf_.trChargeValid.push_back(thePtData.charge_valid_front);
74  } else {
75  csctf_.trPtBit.push_back(thePtData.rear_rank&0x1f);
76  csctf_.trQuality.push_back((thePtData.rear_rank>>5)&0x3);
77  csctf_.trChargeValid.push_back(thePtData.charge_valid_rear);
78  }
79 
80 
81  // convert the Pt in human readable values (GeV/c)
82  csctf_.trPt.push_back(tpts->getPtScale()->getLowEdge(csctf_.trPtBit.back()));
83 
84  // track's Eta and Phi in bit...
85  csctf_.trEtaBit.push_back(trk->first.eta_packed());
86  csctf_.trPhiBit.push_back(trk->first.localPhi());
87 
88  //... in radians
89  // Type 2 is CSC
90  //csctf_.trEta.push_back(theTriggerScales->getRegionalEtaScale(2)->getCenter(trk->first.eta_packed()));
91  //csctf_.trPhi.push_back(theTriggerScales->getPhiScale()->getLowEdge(trk->first.localPhi()));
92  csctf_.trEta.push_back(ts->getRegionalEtaScale(2)->getCenter(trk->first.eta_packed()));
93  csctf_.trPhi.push_back(ts->getPhiScale()->getLowEdge(trk->first.localPhi()));
94  //Phi in one sector varies from [0,62] degrees -> Rescale manually to global coords.
95  csctf_.trPhi_02PI.push_back(fmod(csctf_.trPhi[nTrk-1] +
96  ((trk->first.sector()-1)*TMath::Pi()/3) + //sector 1 starts at 15 degrees
97  (TMath::Pi()/12) , 2*TMath::Pi()));
98 
99 
100  // //csctf lcts of tracks
101  // if( csctfLCTSource_.label() != "none" ){
102 
103  // For each trk, get the list of its LCTs
104  CSCCorrelatedLCTDigiCollection lctsOfTracks = trk -> second;
105 
106  int LctTrkId_ = 0;
107 
108  for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator lctOfTrks = lctsOfTracks.begin();
109  lctOfTrks != lctsOfTracks.end() ; lctOfTrks++){
110 
111  int lctTrkId = 0;
112 
114  lctsOfTracks.get((*lctOfTrks).first);
115 
117  lctTrk = lctRange.first ;
118  lctTrk != lctRange.second; lctTrk++, lctTrkId++){
119 
120 
121  csctf_.trLctEndcap[nTrk-1][LctTrkId_] = (*lctOfTrks).first.zendcap();
122  if ((*lctOfTrks).first.zendcap() > 0)
123  csctf_.trLctSector[nTrk-1][LctTrkId_] = (*lctOfTrks).first.triggerSector();
124  else
125  csctf_.trLctSector[nTrk-1][LctTrkId_] = 6+(*lctOfTrks).first.triggerSector();
126  csctf_.trLctSubSector[nTrk-1][LctTrkId_] = CSCTriggerNumbering::triggerSubSectorFromLabels((*lctOfTrks).first);;
127  csctf_.trLctBx[nTrk-1][LctTrkId_] = lctTrk -> getBX();
128  csctf_.trLctBx0[nTrk-1][LctTrkId_] = lctTrk -> getBX0();
129 
130  csctf_.trLctStation[nTrk-1][LctTrkId_] = (*lctOfTrks).first.station();
131  csctf_.trLctRing[nTrk-1][LctTrkId_] = (*lctOfTrks).first.ring();
132  csctf_.trLctChamber[nTrk-1][LctTrkId_] = (*lctOfTrks).first.chamber();
133  csctf_.trLctTriggerCSCID[nTrk-1][LctTrkId_] = (*lctOfTrks).first.triggerCscId();
134  csctf_.trLctFpga[nTrk-1][LctTrkId_] =
135  ( csctf_.trLctSubSector[nTrk-1][LctTrkId_] ? csctf_.trLctSubSector[nTrk-1][LctTrkId_] : (*lctOfTrks).first.station()+1);
136 
137 
138  // Check if DetId is within range
139  if( csctf_.trLctSector[nTrk-1][LctTrkId_] < 1 || csctf_.trLctSector[nTrk-1][LctTrkId_] > 12 ||
140  csctf_.trLctStation[nTrk-1][LctTrkId_] < 1 || csctf_.trLctStation[nTrk-1][LctTrkId_] > 4 ||
141  csctf_.trLctTriggerCSCID[nTrk-1][LctTrkId_] < 1 || csctf_.trLctTriggerCSCID[nTrk-1][LctTrkId_] > 9 ||
142  lctTrkId < 0 || lctTrkId > 1 ){
143 
144  edm::LogInfo("L1NtupleProducer")<<" TRACK ERROR: CSC digi are out of range: ";
145 
146  continue;
147  }
148 
149  // handles not to overload the method: mostly for readability
150  int endcap = (*lctOfTrks).first.zendcap();
151  if (endcap < 0) endcap = 0;
152 
153  int StationLctTrk = (*lctOfTrks).first.station();
154  int CscIdLctTrk = (*lctOfTrks).first.triggerCscId();
155  int SubSectorLctTrk =
157 
158  int FPGALctTrk =
159  ( SubSectorLctTrk ? SubSectorLctTrk-1 : StationLctTrk );
160 
161 
162  // local Phi
163  lclphidat lclPhi;
164 
165  try {
166 
167  csctf_.trLctstripNum[nTrk-1][LctTrkId_] = lctTrk->getStrip();
168  lclPhi = srLUTs_[FPGALctTrk][endcap] -> localPhi(lctTrk->getStrip(),
169  lctTrk->getPattern(),
170  lctTrk->getQuality(),
171  lctTrk->getBend() );
172 
173  csctf_.trLctlocalPhi[nTrk-1][LctTrkId_] = lclPhi.phi_local;
174  //csctf_.trLctlocalPhi_bend[nTrk-1][LctTrkId_] = lclPhi.phi_bend_local;
175  //csctf_.trLctCLCT_pattern[nTrk-1][LctTrkId_] = lctTrk->getPattern();
176  csctf_.trLctQuality[nTrk-1][LctTrkId_] = lctTrk->getQuality();
177 
178  //std::cout <<"lctTrk->getPattern() = " << lctTrk->getPattern() << std::endl;
179  }
180  catch(...) {
181  bzero(&lclPhi,sizeof(lclPhi));
182  csctf_.trLctlocalPhi[nTrk-1][LctTrkId_] = -999;
183  //csctf_.trLctlocalPhi_bend[nTrk-1][LctTrkId_] = -999;
184  //csctf_.trLctCLCT_pattern[nTrk-1][LctTrkId_] = -999;
185  csctf_.trLctQuality[nTrk-1][LctTrkId_] = -999;
186  }
187  // clct pattern
188  lclphiadd lclPattern;
189  try{
190  //std::cout <<"lclPattern.clct_pattern = " << lclPattern.clct_pattern << std::endl;
191  //std::cout <<"lclPattern.pattern_type = " << lclPattern.pattern_type << std::endl;
192 
193  }
194  catch(...){
195  }
196 
197 
198  // Global Phi
199  gblphidat gblPhi;
200 
201  try {
202 
203  csctf_.trLctwireGroup[nTrk-1][LctTrkId_] = lctTrk->getKeyWG();
204  gblPhi = srLUTs_[FPGALctTrk][endcap] -> globalPhiME(lclPhi.phi_local ,
205  lctTrk->getKeyWG(),
206  CscIdLctTrk);
207 
208  csctf_.trLctglobalPhi[nTrk-1][LctTrkId_] = gblPhi.global_phi;
209 
210  } catch(...) {
211  bzero(&gblPhi,sizeof(gblPhi));
212  csctf_.trLctglobalPhi[nTrk-1][LctTrkId_] = -999;
213  }
214 
215  // Global Eta
216  gbletadat gblEta;
217 
218  try {
219  gblEta = srLUTs_[FPGALctTrk][endcap] -> globalEtaME(lclPhi.phi_bend_local,
220  lclPhi.phi_local ,
221  lctTrk->getKeyWG() ,
222  CscIdLctTrk);
223  csctf_.trLctglobalEta[nTrk-1][LctTrkId_] = gblEta.global_eta;
224  csctf_.trLctCLCT_pattern[nTrk-1][LctTrkId_] = gblEta.global_bend;
225  }
226  catch(...) {
227  bzero(&gblEta,sizeof(gblEta));
228  csctf_.trLctglobalEta[nTrk-1][LctTrkId_] = -999;
229  csctf_.trLctCLCT_pattern[nTrk-1][LctTrkId_] = -999;
230  }
231 
232  ++LctTrkId_;
233 
234  } // for(CSCCorrelatedLCTDigiCollection::const_iterator lctTrk
235  } // for(CSCCorrelatedLCTDigiCollection::DigiRangeIterator lctOfTrks
236 
237  csctf_.trNumLCTs.push_back(LctTrkId_);
238  //}
239  //else
240  // edm::LogInfo("L1NtupleProducer")<<" No valid CSCCorrelatedLCTDigiCollection products found";
241 
243 
244  } //for(L1CSCTrackCollection::const_iterator trk=csctfTrks->begin(); trk<csctfTrks->end(); trk++,nTrk++){
245 }
const double Pi
ptdat Pt(const ptadd &) const
Definition: CSCTFPtLUT.cc:183
const L1MuScale * getPtScale() const
get the Pt scale
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed
L1AnalysisCSCTFDataFormat csctf_
U second(std::pair< T, U > const &p)
const L1MuScale * getPhiScale() const
get the phi scale
class pt_address ptadd
class pt_data ptdat
class global_phi_data gblphidat
class local_phi_address lclphiadd
std::vector< DigiType >::const_iterator const_iterator
class local_phi_data lclphidat
Data Types.
static int triggerSubSectorFromLabels(int station, int chamber)
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC) ...
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
std::pair< const_iterator, const_iterator > Range
class global_eta_data gbletadat

Member Data Documentation

L1AnalysisCSCTFDataFormat L1Analysis::L1AnalysisCSCTF::csctf_
private

Definition at line 47 of file L1AnalysisCSCTF.h.

Referenced by getData(), Reset(), SetDTStubs(), SetLCTs(), SetStatus(), and SetTracks().