CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
ChargeAssignment.h File Reference

Go to the source code of this file.

Functions

int getCharge (int phi1, int phi2, int phi3, int phi4, int mode)
 

Function Documentation

int getCharge ( int  phi1,
int  phi2,
int  phi3,
int  phi4,
int  mode 
)

Definition at line 7 of file ChargeAssignment.h.

References RecoTauCleanerPlugins::charge.

Referenced by L1TMuonEndCapTrackProducer::produce(), and TrackFitter::run().

7  {
8 
9  // -1 = postive physical charge to match pdgId code (i.e. -13 is positive, anti-muon). +1 = negative physical charge.
10  // Also matches DN-2015/017 format for track finder --> uGMT interface format, where 0 indicates positive, 1 negative.
11  int emuCharge = 0;
12  int phidiffs[6] = {phi2 - phi1, phi3 - phi1, phi4 - phi1, phi3 - phi2, phi4 - phi2, phi4 - phi3};
13 
14  if(mode == 15 ){
15  if(phidiffs[0] > 0)
16  emuCharge = 1;
17  else if(phidiffs[0] == 0 && phidiffs[1] < 0)
18  emuCharge = 1;
19  else if(phidiffs[1] == 0 && phidiffs[2] < 0)
20  emuCharge = 1;
21  else
22  emuCharge = -1;
23  }
24 
25  if(mode == 14){
26 
27  if(phidiffs[0] < 0)
28  emuCharge = -1;
29  else if(phidiffs[0] == 0 && phidiffs[1] < 0)
30  emuCharge = -1;
31  else
32  emuCharge = 1;
33  }
34 
35  if(mode == 13){
36  if(phidiffs[0] > 0)
37  emuCharge = 1;
38  else if(phidiffs[0] == 0 && phidiffs[2] < 0)
39  emuCharge = 1;
40  else
41  emuCharge = -1;
42  }
43 
44  if(mode == 12){
45  if(phidiffs[0] > 0)
46  emuCharge = 1;
47  else
48  emuCharge = -1;
49  }
50 
51  if(mode == 11){
52  if(phidiffs[1] > 0)
53  emuCharge = 1;
54  else if(phidiffs[1] == 0 && phidiffs[2] < 0)
55  emuCharge = 1;
56  else
57  emuCharge = -1;
58  }
59 
60  if(mode == 10){
61  if(phidiffs[1] > 0)
62  emuCharge = 1;
63  else
64  emuCharge = -1;
65  }
66 
67  if(mode == 9){
68  if(phidiffs[2] > 0)
69  emuCharge = 1;
70  else
71  emuCharge = -1;
72  }
73 
74  if(mode == 7){
75  if(phidiffs[3] > 0)
76  emuCharge = 1;
77  else if(phidiffs[3] == 0 && phidiffs[4] < 0)
78  emuCharge = 1;
79  else
80  emuCharge = -1;
81  }
82 
83  if(mode == 6){
84  if(phidiffs[3] > 0)
85  emuCharge = 1;
86  else
87  emuCharge = -1;
88  }
89 
90  if(mode == 5){
91  if(phidiffs[4] > 0)
92  emuCharge = 1;
93  else
94  emuCharge = -1;
95  }
96 
97  if(mode == 3){
98  if(phidiffs[5] > 0)
99  emuCharge = 1;
100  else
101  emuCharge = -1;
102  }
103 
104  int charge = 0;
105  if(emuCharge == 1)
106  charge = 1;
107 
108  return charge;
109 
110 }