CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HaloTrigger.cc
Go to the documentation of this file.
1 /*
2  * HaloTrigger.cc
3  * Created by Joseph Gartner on 12/17/08
4  * Please use this code for good, not evil
5  */
6 
8 
10 
12 
17 
34 
36 
40 
41 #include <iostream>
42 #include <iomanip>
43 #include <memory>
44 
45 using namespace std;
46 using namespace edm;
47 using namespace trigger;
48 
50 {
51 // dbe = NULL;
52 // if( ps.getUntrackedParameter<bool>("DQMStore", false) )
53 // {
54  dbe = Service<DQMStore>().operator->();
55  dbe->setVerbose(0);
56 // }
57 
58  first = false;
59  outFile = ps.getUntrackedParameter<string>("outFile");
60 
61  HLTriggerTag = ps.getParameter< edm::InputTag >("HLTriggerTag");
62  GMTInputTag = ps.getParameter< edm::InputTag >("GMTInputTag");
63  lctProducer = ps.getParameter< edm::InputTag >("LCTInputTag");
64  cscRecHitLabel = ps.getParameter< edm::InputTag >("RecInputTag");
65 
66 }
67 
69 {}
70 
72 {
74  // Initialize Counters //
76  hltHaloTriggers = 0;
77  hltHaloOver1 = 0;
78  hltHaloOver2 = 0;
79  hltHaloRing23 = 0;
80  CscHalo_Gmt = 0;
81 
83  // DQM Directory Structure //
85  DQMStore * dbe = 0;
86  dbe = Service<DQMStore>().operator->();
87  if( dbe ){
88  dbe->setCurrentFolder("HLTriggerOffline/special");
89 
91  // Define Monitor Elements a.k.a. Plots //
93  PlusMe1BeamHaloOcc = dbe->book2D("PlusMe1BeamHaloOcc","Positive Endcap, Me1 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
94  PlusMe1BeamHaloOccRing1 = dbe->book2D("PlusMe1BeamHaloOccRing1","Positive Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
95  PlusMe1BeamHaloOccRing2 = dbe->book2D("PlusMe1BeamHaloOccRing2","Positive Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
96  PlusMe1BeamHaloOccRing2or3 = dbe->book2D("PlusMe1BeamHaloOccRing2or3","Positive Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
97  PlusMe1BeamHaloOccRad = dbe->book1D("PlusMe1BeamHaloOccRad","Positive Endcap, Me1 Beam Halo Radial Occupancy",750,0,750);
98 
99  PlusMe2BeamHaloOcc = dbe->book2D("PlusMe2BeamHaloOcc","Positive Endcap, Me2 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
100  PlusMe2BeamHaloOccRing1 = dbe->book2D("PlusMe2BeamHaloOccRing1","Positive Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
101  PlusMe2BeamHaloOccRing2 = dbe->book2D("PlusMe2BeamHaloOccRing2","Positive Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
102  PlusMe2BeamHaloOccRing2or3 = dbe->book2D("PlusMe2BeamHaloOccRing2or3","Positive Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
103 
104  PlusMe3BeamHaloOcc = dbe->book2D("PlusMe3BeamHaloOcc","Positive Endcap, Me3 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
105  PlusMe3BeamHaloOccRing1 = dbe->book2D("PlusMe3BeamHaloOccRing1","Positive Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
106  PlusMe3BeamHaloOccRing2 = dbe->book2D("PlusMe3BeamHaloOccRing2","Positive Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
107  PlusMe3BeamHaloOccRing2or3 = dbe->book2D("PlusMe3BeamHaloOccRing2or3","Positive Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
108 
109  PlusMe4BeamHaloOcc = dbe->book2D("PlusMe4BeamHaloOcc","Positive Endcap, Me4 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
110  PlusMe4BeamHaloOccRing1 = dbe->book2D("PlusMe4BeamHaloOccRing1","Positive Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
111  PlusMe4BeamHaloOccRing2 = dbe->book2D("PlusMe4BeamHaloOccRing2","Positive Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
112  PlusMe4BeamHaloOccRing2or3 = dbe->book2D("PlusMe4BeamHaloOccRing2or3","Positive Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
113 
114  MinusMe1BeamHaloOcc = dbe->book2D("MinusMe1Me1BeamHaloOcc","Negative Endcap, Me1 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
115  MinusMe1BeamHaloOccRing1 = dbe->book2D("MinusBeamHaloOccRing1","Negative Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
116  MinusMe1BeamHaloOccRing2 = dbe->book2D("MinusMe1BeamHaloOccRing2","Negative Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
117  MinusMe1BeamHaloOccRing2or3 = dbe->book2D("MinusMe1BeamHaloOccRing2or3","Negative Endcap, Me1 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
118  MinusMe1BeamHaloOccRad = dbe->book1D("MinusMe1BeamHaloOccRad","Minus Endcap, Me1 Beam Halo Radial Occupancy",750,0,750);
119 
120  MinusMe2BeamHaloOcc = dbe->book2D("MinusMe2BeamHaloOcc","Negative Endcap, Me2 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
121  MinusMe2BeamHaloOccRing1 = dbe->book2D("MinusMe2BeamHaloOccRing1","Negative Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
122  MinusMe2BeamHaloOccRing2 = dbe->book2D("MinusMe2BeamHaloOccRing2","Negative Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
123  MinusMe2BeamHaloOccRing2or3 = dbe->book2D("MinusMe2BeamHaloOccRing2or3","Negative Endcap, Me2 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
124 
125  MinusMe3BeamHaloOcc = dbe->book2D("MinusMe3BeamHaloOcc","Negative Endcap, Me3 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
126  MinusMe3BeamHaloOccRing1 = dbe->book2D("MinusMe3BeamHaloOccRing1","Negative Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring1",1000,-500,500,1000,-500,500);
127  MinusMe3BeamHaloOccRing2 = dbe->book2D("MinusMe3BeamHaloOccRing2","Negative Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
128  MinusMe3BeamHaloOccRing2or3 = dbe->book2D("MinusMe3BeamHaloOccRing2or3","Negative Endcap, Me3 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
129 
130  MinusMe4BeamHaloOcc = dbe->book2D("MinusMe4BeamHaloOcc","Negative Endcap, Me4 Beam Halo Occupancy",1000,-500,500,1000,-500,500);
131  MinusMe4BeamHaloOccRing1 = dbe->book2D("MinusMe4BeamHaloOccRing1","Negative Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring1",1000,-500.,500.,1000,-500.,500.);
132  MinusMe4BeamHaloOccRing2 = dbe->book2D("MinusMe4BeamHaloOccRing2","Negative Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring2",1000,-500,500,1000,-500,500);
133  MinusMe4BeamHaloOccRing2or3 = dbe->book2D("MinusMe4BeamHaloOccRing2or3","Negative Endcap, Me4 Beam Halo Occupancy, HLT Trig Ring 2 or 3",1000,-500,500,1000,-500,500);
134 
135  MinusMe3BeamHaloOccRing2Unfold = dbe->book2D("MinusMe3BeamHaloOccRing2Unfold","Negative Endcap Me3, Ring 2 Unfolded",120,-1,11,500,-2.4,-0.9);
136  MinusMe2BeamHaloOccRing2Unfold = dbe->book2D("MinusMe2BeamHaloOccRing2Unfold","Negative Endcap Me2, Ring 2 Unfolded",120,-1,11,500,-2.4,-0.9);
137  PlusMe3BeamHaloOccRing2Unfold = dbe->book2D("PlusMe3BeamHaloOccRing2Unfold","Negative Endcap Me3, Ring 2 Unfolded",120,-1,11,500,0.9,2.4);
138  PlusMe2BeamHaloOccRing2Unfold = dbe->book2D("PlusMe2BeamHaloOccRing2Unfold","Negative Endcap Me2, Ring 2 Unfolded",120,-1,11,500,0.9,2.4);
139 
140  MinusMe3BeamHaloOccRing1Unfold = dbe->book2D("MinusMe3BeamHaloOccRing1Unfold","Negative Endcap Me3, Ring 1 Unfolded",120,-1,11,500,-2.5,-0.9);
141  MinusMe2BeamHaloOccRing1Unfold = dbe->book2D("MinusMe2BeamHaloOccRing1Unfold","Negative Endcap Me2, Ring 1 Unfolded",120,-1,11,500,-2.5,-0.9);
142  PlusMe3BeamHaloOccRing1Unfold = dbe->book2D("PlusMe3BeamHaloOccRing1Unfold","Negative Endcap Me3, Ring 1 Unfolded",120,-1,11,500,0.9,2.5);
143  PlusMe2BeamHaloOccRing1Unfold = dbe->book2D("PlusMe2BeamHaloOccRing1Unfold","Negative Endcap Me2, Ring 1 Unfolded",120,-1,11,500,0.9,2.5);
144 
145  MinusEff = dbe->bookProfile("MinusEff", "Minus Endcap Efficiency by Vertex",50,0,750,50,0,1);
146  MinusEff->setAxisTitle("Radius",1);
147  MinusEff->setAxisTitle("Efficiency",2);
148  //MinusEffProj3 = dbe->bookProfile("MinusEffProj3", "Minus Endcap Efficiency Projected to statoin 3",50,0,750,50,0,1);
149  MinusEffProj3 = dbe->book1D("MinusEffProj3","Minus Endcap Efficiency by projection",50,0,750);
150  MinusEffProj3->setBinLabel(1,"0",1);
151  MinusEffProj3->setBinLabel(10,"150",1);
152  MinusEffProj3->setBinLabel(20,"300",1);
153  MinusEffProj3->setBinLabel(30,"450",1);
154  MinusEffProj3->setBinLabel(40,"600",1);
155  MinusEffProj3->setBinLabel(50,"750",1);
156  MinusEffProj3->setAxisTitle("Radius",1);
157  MinusEffProj3->setAxisTitle("Efficiency",2);
158  MinusEffNum = dbe->book1D("MinusEffNum", "Minus Endcap numerator",50,0,750);
159  MinusEffDen = dbe->book1D("MinusEffDen", "Minus Endcap denomenator", 50, 0, 750);
160  PlusEff = dbe->bookProfile("PlusEff", "Plus Endcap Efficiency by Vertex",50,0,750,50,0,1);
161  PlusEff->setAxisTitle("Radius",1);
162  PlusEff->setAxisTitle("Efficiency",2);
163  //PlusEffProj3 = dbe->bookProfile("PlusEffProj3", "Plus Endcap Efficiency Projected to station 3",50,0,750,50,0,1);
164  PlusEffProj3 = dbe->book1D("PlusEffProj3","Plus Endcap Efficiency by projection",50,0,750);
165  PlusEffProj3->setAxisTitle("Radius",1);
166  PlusEffProj3->setAxisTitle("Efficiency",2);
167  PlusEffProj3->setBinLabel(1,"0",1);
168  PlusEffProj3->setBinLabel(10,"150",1);
169  PlusEffProj3->setBinLabel(20,"300",1);
170  PlusEffProj3->setBinLabel(30,"450",1);
171  PlusEffProj3->setBinLabel(40,"600",1);
172  PlusEffProj3->setBinLabel(50,"750",1);
173  PlusEffNum = dbe->book1D("PlusEffNum", "Plus Endcap numerator",50,0,750);
174  PlusEffDen = dbe->book1D("PlusEffDen", "Plus Endcap denomenator", 50, 0, 750);
175  }
176 
177  //es.get<MuonGeometryRecord>().get(m_cscGeometry);
178  for( int i=0; i<50; ++i)
179  {
180  numCountPlus[i] = 0;
181  denCountPlus[i] = 0;
182  numCountMinus[i] = 0;
183  denCountMinus[i] = 0;
184  }
185 }
186 
188 {
189  for(int j=1;j<51;j++)
190  {
191  if(denCountPlus[j] != 0)
192  {
193  float fillValuePlus = numCountPlus[j]/denCountPlus[j];
194  PlusEffProj3->setBinContent(j,fillValuePlus);
195  }
196 
197  if(denCountMinus[j] != 0)
198  {
199  float fillValueMinus = numCountMinus[j]/denCountMinus[j];
200  MinusEffProj3->setBinContent(j,fillValueMinus);
201  }
202  }
203 
204 
205 
206  dbe->save(outFile);
207  return;
208 }
209 
210 void HaloTrigger::analyze(const Event& e, const EventSetup& es)
211 {
212 
213 
214  es.get<MuonGeometryRecord>().get(m_cscGeometry);
215 
216  edm::Handle<edm::SimVertexContainer> simvertices_handle;
217  e.getByLabel("g4SimHits",simvertices_handle);
218  edm::SimVertexContainer const* simvertices = simvertices_handle.product();
219 
220  edm::Handle<edm::SimTrackContainer> simtracks_handle;
221  e.getByLabel("g4SimHits",simtracks_handle);
222  edm::SimTrackContainer const* simtracks = simtracks_handle.product();
223 
224  float vtxArray[7];
225  for(int jj=0; jj<7; jj++) vtxArray[jj] = 0;
226  edm::SimTrackContainer::const_iterator isimtr;
227  for(isimtr=simtracks->begin(); isimtr!=simtracks->end(); isimtr++) {
228  if( (*simvertices)[(*isimtr).vertIndex()].position().z() > 2299 ){
229  vtxArray[1] = 1;
230  vtxArray[2] = (*simvertices)[(*isimtr).vertIndex()].position().x();
231  vtxArray[3] = (*simvertices)[(*isimtr).vertIndex()].position().y();
232  vtxArray[4] = (*isimtr).momentum().px();
233  vtxArray[5] = (*isimtr).momentum().py();
234  vtxArray[6] = (*isimtr).momentum().pz();
235  }
236 
237  if( (*simvertices)[(*isimtr).vertIndex()].position().z() < -2299 ){
238  vtxArray[1] = -1;
239  vtxArray[2] = (*simvertices)[(*isimtr).vertIndex()].position().x();
240  vtxArray[3] = (*simvertices)[(*isimtr).vertIndex()].position().y();
241  vtxArray[4] = (*isimtr).momentum().px();
242  vtxArray[5] = (*isimtr).momentum().py();
243  vtxArray[6] = (*isimtr).momentum().pz();
244  }
245  }
246 
247  if( HLTriggerTag.label() != "null" )
248  {
250  e.getByLabel(HLTriggerTag,trh);
251 
253  // Initialize HLT Paths //
255  if (!first)
256  {
257  first = true;
258  edm::TriggerNames const& triggerNames = e.triggerNames(*trh);
259  Namen = triggerNames.triggerNames();
260  const unsigned int n(Namen.size());
261  std::string searchName_Halo0 ("HLT_CSCBeamHalo");
262  std::string searchName_Halo1 ("HLT_CSCBeamHaloOverlapRing1");
263  std::string searchName_Halo2 ("HLT_CSCBeamHaloOverlapRing2");
264  std::string searchName_Halo3 ("HLT_CSCBeamHaloRing2or3");
265  for( unsigned int i=0; i!=n; ++i){
266  int compy = Namen[i].compare(searchName_Halo0);
267  if( compy == 0) majikNumber0 = i;
268 
269  compy = Namen[i].compare(searchName_Halo1);
270  if( compy == 0) majikNumber1 = i;
271 
272  compy = Namen[i].compare(searchName_Halo2);
273  if( compy == 0) majikNumber2 = i;
274 
275  compy = Namen[i].compare(searchName_Halo3);
276  if( compy == 0) majikNumber3 = i;
277  }// loop over all trigger indices searching for HLT of interest
278  }
279 
281  // ID Halo Triggers //
283  bool haloTriggerAny = false;
284  bool halo0 = false, halo1 = false, halo2 = false, halo3 = false;
285  const unsigned int n(Namen.size());
286  for( unsigned int j=0; j!=n; ++j)
287  {
288  if( (j == majikNumber0) && (trh->accept(j)) )
289  {
290  halo0 = true;
291  haloTriggerAny = true;
292  }
293 
294  if( (j == majikNumber1) && (trh->accept(j)) )
295  {
296  halo1 = true;
297  haloTriggerAny = true;
298  }
299 
300  if( (j == majikNumber2) && (trh->accept(j)) )
301  {
302  halo2 = true;
303  haloTriggerAny = true;
304  }
305 
306  if( (j == majikNumber3) && (trh->accept(j)) )
307  {
308  halo3 = true;
309  haloTriggerAny = true;
310  }
311  }// loop over all triggers in every event, check if path was run
312 
313  float radius = sqrt( vtxArray[2]*vtxArray[2] + vtxArray[3]*vtxArray[3] );
314 
315  if( vtxArray[1] == 1){
316  float projX = ((vtxArray[4]/vtxArray[6])*(-1375)) + vtxArray[2];
317  float projY = ((vtxArray[5]/vtxArray[6])*(-1375)) + vtxArray[3];
318  float projRad = sqrt(projX*projX + projY*projY);
319  int radInd = 0;
320  for(int j=0; j<50; j++)
321  {
322  if((projRad >= (j)*15.0) && (projRad < (j+1)*15)) radInd = j;
323  }
324  PlusEffDen->Fill(radius);
325  if(haloTriggerAny == true){
326  PlusEff->Fill(radius,1);
327  PlusEffNum->Fill(radius);
328  if((vtxArray[6] < 10) && (radInd != 0))
329  {
330  numCountPlus[radInd]+=1.0;
331  denCountPlus[radInd]+=1.0;
332  }
333  } else {
334  PlusEff->Fill(radius,0);
335  if((vtxArray[6] < 50) && (radInd !=0))
336  {
337  denCountPlus[radInd]+=1.0;
338  }
339  }
340  }
341 
342  if( vtxArray[1] == -1){
343  float projX = ((vtxArray[4]/vtxArray[6])*(1375)) + vtxArray[2];
344  float projY = ((vtxArray[5]/vtxArray[6])*(1375)) + vtxArray[3];
345  float projRad = sqrt(projX*projX + projY*projY);
346  int radInd = 0;
347  for(int j=0; j<50; j++)
348  if((projRad >= (j)*15.0) && (projRad < (j+1)*15)) radInd = j;
349  MinusEffDen->Fill(radius);
350  if(haloTriggerAny == true){
351  MinusEff->Fill(radius,1);
352  if((vtxArray[6] > 50) && (radInd != 0)){
353  numCountMinus[radInd]+=1.0;
354  denCountMinus[radInd]+=1.0;
355  }
356  MinusEffNum->Fill(radius);
357  } else {
358  MinusEff->Fill(radius,0);
359  if((vtxArray[6] > 10) && (radInd != 0))
360  {
361  denCountMinus[radInd]+=1.0;
362  }
363  }
364  }
365 
367  // Rec Hit Info //
369  if( haloTriggerAny == true )
370  {
371  float cscHit[9][8];
372  for(int j = 1; j < 9; j++) cscHit[j][1] = 0;
373 
375  e.getByLabel(cscRecHitLabel, cscRecHits);
376  CSCRecHit2DCollection::const_iterator hit = cscRecHits->begin();
377  for(; hit != cscRecHits->end(); hit++)
378  {
379  LocalPoint p = hit->localPosition();
380  CSCDetId id((hit)->geographicalId().rawId());
381  GlobalPoint gP = m_cscGeometry->idToDet(id)->toGlobal(hit->localPosition());
382  int hitIndex = id.station() + 5*(id.endcap() - 1);
383  if( cscHit[hitIndex][1] == 0 )
384  {
385  cscHit[hitIndex][1] = 1;
386  cscHit[hitIndex][2] = gP.x();
387  cscHit[hitIndex][3] = gP.y();
388  cscHit[hitIndex][4] = gP.z();
389  cscHit[hitIndex][5] = sqrt( gP.x()*gP.x() + gP.y()*gP.y() );
390  float joe1 = ((gP.phi()+3.2)*180*100/(3.14));
391  int joe2 = int(joe1) % 1000;
392  float joe3 = (1.0*joe2)/100;
393  cscHit[hitIndex][6] = joe3;
394  cscHit[hitIndex][7] = gP.eta();
395  }//cscHit[x][1] == 0
396  }//2d rec hit loop
397 
399  // Fill Histograms //
401  if(halo0 == true)
402  {
403  if(cscHit[1][1] == 1)
404  {
405  PlusMe1BeamHaloOcc->Fill(cscHit[1][2],cscHit[1][3]);
406  PlusMe1BeamHaloOccRad->Fill(cscHit[1][5]);
407  }
408  if(cscHit[2][1] == 1) PlusMe2BeamHaloOcc->Fill(cscHit[2][2],cscHit[2][3]);
409  if(cscHit[3][1] == 1) PlusMe3BeamHaloOcc->Fill(cscHit[3][2],cscHit[3][3]);
410  if(cscHit[4][1] == 1) PlusMe4BeamHaloOcc->Fill(cscHit[4][2],cscHit[4][3]);
411  if(cscHit[5][1] == 1)
412  {
413  MinusMe1BeamHaloOcc->Fill(cscHit[5][2],cscHit[5][3]);
414  MinusMe1BeamHaloOccRad->Fill(cscHit[5][5]);
415  }
416  if(cscHit[6][1] == 1) MinusMe2BeamHaloOcc->Fill(cscHit[6][2],cscHit[6][3]);
417  if(cscHit[7][1] == 1) MinusMe3BeamHaloOcc->Fill(cscHit[7][2],cscHit[7][3]);
418  if(cscHit[8][1] == 1) MinusMe4BeamHaloOcc->Fill(cscHit[8][2],cscHit[8][3]);
419 
420  }//HLT_CSCBeamHalo
421 
422  if(halo1 == true)
423  {
424  if(cscHit[1][1] == 1) PlusMe1BeamHaloOccRing1->Fill(cscHit[1][2],cscHit[1][3]);
425  if(cscHit[2][1] == 1)
426  {
427  PlusMe2BeamHaloOccRing1->Fill(cscHit[2][2],cscHit[2][3]);
428  PlusMe2BeamHaloOccRing1Unfold->Fill(cscHit[2][6],cscHit[2][7]);
429  }
430  if(cscHit[3][1] == 1)
431  {
432  PlusMe3BeamHaloOccRing1->Fill(cscHit[3][2],cscHit[3][3]);
433  PlusMe3BeamHaloOccRing1Unfold->Fill(cscHit[3][6],cscHit[3][7]);
434  }
435  if(cscHit[4][1] == 1) PlusMe4BeamHaloOccRing1->Fill(cscHit[4][2],cscHit[4][3]);
436  if(cscHit[5][1] == 1) MinusMe1BeamHaloOccRing1->Fill(cscHit[5][2],cscHit[5][3]);
437  if(cscHit[6][1] == 1)
438  {
439  MinusMe2BeamHaloOccRing1->Fill(cscHit[6][2],cscHit[6][3]);
440  MinusMe2BeamHaloOccRing1Unfold->Fill(cscHit[6][6],cscHit[6][7]);
441  }
442  if(cscHit[7][1] == 1)
443  {
444  MinusMe3BeamHaloOccRing1->Fill(cscHit[7][2],cscHit[7][3]);
445  MinusMe3BeamHaloOccRing1Unfold->Fill(cscHit[7][6],cscHit[7][7]);
446  }
447  if(cscHit[8][1] == 1) MinusMe4BeamHaloOccRing1->Fill(cscHit[8][2],cscHit[8][3]);
448  }//HLT_CSCBeamHalo
449 
450  if(halo2 == true)
451  {
452  if(cscHit[1][1] == 1) PlusMe1BeamHaloOccRing2->Fill(cscHit[1][2],cscHit[1][3]);
453  if(cscHit[2][1] == 1)
454  {
455  PlusMe2BeamHaloOccRing2->Fill(cscHit[2][2],cscHit[2][3]);
456  PlusMe2BeamHaloOccRing2Unfold->Fill(cscHit[2][6],cscHit[2][7]);
457  }
458  if(cscHit[3][1] == 1)
459  {
460  PlusMe3BeamHaloOccRing2->Fill(cscHit[3][2],cscHit[3][3]);
461  PlusMe3BeamHaloOccRing2Unfold->Fill(cscHit[2][6],cscHit[2][7]);
462  }
463  if(cscHit[4][1] == 1) PlusMe4BeamHaloOccRing2->Fill(cscHit[4][2],cscHit[4][3]);
464  if(cscHit[5][1] == 1) MinusMe1BeamHaloOccRing2->Fill(cscHit[5][2],cscHit[5][3]);
465  if(cscHit[6][1] == 1)
466  {
467  MinusMe2BeamHaloOccRing2->Fill(cscHit[6][2],cscHit[6][3]);
468  MinusMe2BeamHaloOccRing2Unfold->Fill(cscHit[6][6],cscHit[6][7]);
469  }
470  if(cscHit[7][1] == 1)
471  {
472  MinusMe3BeamHaloOccRing2->Fill(cscHit[7][2],cscHit[7][3]);
473  MinusMe3BeamHaloOccRing2Unfold->Fill(cscHit[7][6],cscHit[7][7]);
474  }
475  if(cscHit[8][1] == 1) MinusMe4BeamHaloOccRing2->Fill(cscHit[8][2],cscHit[8][3]);
476  }//HLT_CSCBeamHalo
477 
478  if(halo3 == true)
479  {
480  if(cscHit[1][1] == 1) PlusMe1BeamHaloOccRing2or3->Fill(cscHit[1][2],cscHit[1][3]);
481  if(cscHit[2][1] == 1) PlusMe2BeamHaloOccRing2or3->Fill(cscHit[2][2],cscHit[2][3]);
482  if(cscHit[3][1] == 1) PlusMe3BeamHaloOccRing2or3->Fill(cscHit[3][2],cscHit[3][3]);
483  if(cscHit[4][1] == 1) PlusMe4BeamHaloOccRing2or3->Fill(cscHit[4][2],cscHit[4][3]);
484  if(cscHit[5][1] == 1) MinusMe1BeamHaloOccRing2or3->Fill(cscHit[5][2],cscHit[5][3]);
485  if(cscHit[6][1] == 1) MinusMe2BeamHaloOccRing2or3->Fill(cscHit[6][2],cscHit[6][3]);
486  if(cscHit[7][1] == 1) MinusMe3BeamHaloOccRing2or3->Fill(cscHit[7][2],cscHit[7][3]);
487  if(cscHit[8][1] == 1) MinusMe4BeamHaloOccRing2or3->Fill(cscHit[8][2],cscHit[8][3]);
488  }//HLT_CSCBeamHalo
489  }//haloTrigger true
490  }//HLTriggerTag != null
491 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:208
void analyze(const edm::Event &e, const edm::EventSetup &es)
Definition: HaloTrigger.cc:210
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
Geom::Phi< T > phi() const
Definition: PV3DBase.h:63
T y() const
Definition: PV3DBase.h:57
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void endJob(void)
Definition: HaloTrigger.cc:187
virtual ~HaloTrigger()
Definition: HaloTrigger.cc:68
Strings const & triggerNames() const
Definition: TriggerNames.cc:24
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:45
T sqrt(T t)
Definition: SSEVec.h:28
T z() const
Definition: PV3DBase.h:58
int j
Definition: DBlmapReader.cc:9
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:833
bool first
Definition: L1TdeRCT.cc:79
HaloTrigger(const edm::ParameterSet &ps)
Definition: HaloTrigger.cc:49
void beginJob()
Definition: HaloTrigger.cc:71
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
const T & get() const
Definition: EventSetup.h:55
std::vector< SimVertex > SimVertexContainer
T const * product() const
Definition: Handle.h:74
T eta() const
Definition: PV3DBase.h:70
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:647
T x() const
Definition: PV3DBase.h:56
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
std::vector< SimTrack > SimTrackContainer
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237