CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
RPCSeedLayerFinder Class Reference

#include <RPCSeedLayerFinder.h>

Public Member Functions

void configure (const edm::ParameterSet &iConfig)
 
void fill ()
 
 RPCSeedLayerFinder ()
 
void setInput (MuonRecHitContainer(&recHitsRPC)[12])
 
void setOutput (RPCSeedrecHitFinder *Ref, RPCCosmicSeedrecHitFinder *CosmicRef)
 
void unsetInput ()
 
 ~RPCSeedLayerFinder ()
 

Private Types

typedef
MuonTransientTrackingRecHit::ConstMuonRecHitContainer 
ConstMuonRecHitContainer
 
typedef
MuonTransientTrackingRecHit::ConstMuonRecHitPointer 
ConstMuonRecHitPointer
 
typedef
MuonTransientTrackingRecHit::MuonRecHitContainer 
MuonRecHitContainer
 
typedef
MuonTransientTrackingRecHit::MuonRecHitPointer 
MuonRecHitPointer
 

Private Member Functions

bool checkConstrain ()
 
void fillCosmicLayers ()
 
void fillLayers ()
 
void SpecialLayers (int last, unsigned int NumberofLayers, int type)
 

Private Attributes

std::vector< unsigned int > constrainedLayersinBarrel
 
bool isConfigured
 
bool isCosmic
 
bool isInputset
 
bool isMixBarrelwithEndcap
 
bool isOutputset
 
bool isSpecialLayers
 
std::vector< unsigned int > LayersinBarrel
 
std::vector< unsigned int > LayersinEndcap
 
std::vector< unsigned int > LayersinRPC
 
std::vector< unsigned int > RangeofLayersinBarrel
 
std::vector< unsigned int > RangeofLayersinEndcap
 
unsigned int recHitsinLayers [12]
 
RPCCosmicSeedrecHitFinderRPCCosmicrecHitFinderRef
 
RPCSeedrecHitFinderRPCrecHitFinderRef
 

Detailed Description

Author
Haiyun.Teng - Peking University

Definition at line 28 of file RPCSeedLayerFinder.h.

Member Typedef Documentation

Definition at line 32 of file RPCSeedLayerFinder.h.

Definition at line 30 of file RPCSeedLayerFinder.h.

Definition at line 31 of file RPCSeedLayerFinder.h.

Definition at line 29 of file RPCSeedLayerFinder.h.

Constructor & Destructor Documentation

RPCSeedLayerFinder::RPCSeedLayerFinder ( )

Definition at line 11 of file RPCSeedLayerFinder.cc.

11  {
12  // Initiate the member
13  LayersinRPC.clear();
14  isConfigured = false;
15  isInputset = false;
16  isOutputset = false;
17 }
std::vector< unsigned int > LayersinRPC
RPCSeedLayerFinder::~RPCSeedLayerFinder ( )

Definition at line 19 of file RPCSeedLayerFinder.cc.

19 {}

Member Function Documentation

bool RPCSeedLayerFinder::checkConstrain ( )
private

Definition at line 354 of file RPCSeedLayerFinder.cc.

References BarrelLayerNumber, and mps_fire::i.

354  {
355  bool pass = true;
356  std::vector<unsigned int> fitConstrain = constrainedLayersinBarrel;
357  for (unsigned int i = 0; i < LayersinRPC.size(); i++)
358  fitConstrain[LayersinRPC[i]] = 0;
359  for (unsigned int i = 0; i < BarrelLayerNumber; i++)
360  if (fitConstrain[i] != 0)
361  pass = false;
362  return pass;
363 }
std::vector< unsigned int > constrainedLayersinBarrel
std::vector< unsigned int > LayersinRPC
#define BarrelLayerNumber
void RPCSeedLayerFinder::configure ( const edm::ParameterSet iConfig)

Definition at line 21 of file RPCSeedLayerFinder.cc.

References edm::ParameterSet::getParameter().

21  {
22  // Set the configuration
23  isCosmic = iConfig.getParameter<bool>("isCosmic");
24  isMixBarrelwithEndcap = iConfig.getParameter<bool>("isMixBarrelwithEndcap");
25  RangeofLayersinBarrel = iConfig.getParameter<std::vector<unsigned int> >("RangeofLayersinBarrel");
26  RangeofLayersinEndcap = iConfig.getParameter<std::vector<unsigned int> >("RangeofLayersinEndcap");
27  isSpecialLayers = iConfig.getParameter<bool>("isSpecialLayers");
28  LayersinBarrel = iConfig.getParameter<std::vector<unsigned int> >("LayersinBarrel");
29  LayersinEndcap = iConfig.getParameter<std::vector<unsigned int> >("LayersinEndcap");
30  constrainedLayersinBarrel = iConfig.getParameter<std::vector<unsigned int> >("constrainedLayersinBarrel");
31 
32  // Set the signal open
33  isConfigured = true;
34 }
std::vector< unsigned int > LayersinEndcap
std::vector< unsigned int > LayersinBarrel
std::vector< unsigned int > RangeofLayersinBarrel
std::vector< unsigned int > RangeofLayersinEndcap
std::vector< unsigned int > constrainedLayersinBarrel
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
void RPCSeedLayerFinder::fill ( void  )

Definition at line 52 of file RPCSeedLayerFinder.cc.

References gather_cfg::cout.

52  {
53  // Check if already configured
54  if (isConfigured == false || isInputset == false || isOutputset == false) {
55  cout << "RPCSeedLayerFinder needs to be configured and set IO before running RPCSeedLayerFinder::fillLayers()"
56  << endl;
57  return;
58  }
59 
60  // Clear the vector LayersinRPC
61  LayersinRPC.clear();
62 
63  // Now fill the Layers
64  if (isCosmic == true) {
65  if (RPCCosmicrecHitFinderRef != nullptr)
67  else
68  cout << "RPCCosmicrecHitFinderRef not set" << endl;
69  } else {
70  if (RPCrecHitFinderRef != nullptr)
71  fillLayers();
72  else
73  cout << "RPCrecHitFinderRef not set" << endl;
74  }
75 }
RPCCosmicSeedrecHitFinder * RPCCosmicrecHitFinderRef
RPCSeedrecHitFinder * RPCrecHitFinderRef
std::vector< unsigned int > LayersinRPC
tuple cout
Definition: gather_cfg.py:144
void RPCSeedLayerFinder::fillCosmicLayers ( )
private

Definition at line 185 of file RPCSeedLayerFinder.cc.

References BarrelLayerNumber, gather_cfg::cout, EachEndcapLayerNumber, and mps_fire::i.

185  {
186  // For cosmic only handle the SpecialLayers case
187  if (isSpecialLayers == true && isMixBarrelwithEndcap == false) {
188  // Fill barrel layer for seed
189  unsigned int i = 0;
190  LayersinRPC.clear();
191  for (std::vector<unsigned int>::iterator it = LayersinBarrel.begin(); it != LayersinBarrel.end(); it++, i++) {
192  if ((*it) != 0 && i < BarrelLayerNumber)
193  if (recHitsinLayers[i] != 0)
194  LayersinRPC.push_back(i);
195  }
196  if (!LayersinRPC.empty()) {
197  // Initiate and call recHit Finder
200  }
201  LayersinRPC.clear();
202 
203  // Fill -Z and +Z endcap layer
204 
205  // Fill endcap- layer for seed
206  i = BarrelLayerNumber;
207  LayersinRPC.clear();
208  for (std::vector<unsigned int>::iterator it = LayersinEndcap.begin(); it != LayersinEndcap.end(); it++, i++) {
209  if ((*it) != 0 && i < (BarrelLayerNumber + EachEndcapLayerNumber))
210  if (recHitsinLayers[i] != 0)
211  LayersinRPC.push_back(i);
212  }
213  if (!LayersinRPC.empty()) {
214  // Initiate and call recHit Finder
217  }
218  LayersinRPC.clear();
219 
220  //Fill endcap+ layer for seed
221  i = BarrelLayerNumber;
222  LayersinRPC.clear();
223  for (std::vector<unsigned int>::iterator it = LayersinEndcap.begin(); it != LayersinEndcap.end(); it++, i++) {
224  if ((*it) != 0 && i >= (BarrelLayerNumber + EachEndcapLayerNumber) &&
226  if (recHitsinLayers[i] != 0)
227  LayersinRPC.push_back(i);
228  }
229  if (!LayersinRPC.empty()) {
230  // Initiate and call recHit Finder
233  }
234  LayersinRPC.clear();
235  }
236 
237  if (isSpecialLayers == true && isMixBarrelwithEndcap == true) {
238  // Fill all
239  unsigned int i = 0;
240  LayersinRPC.clear();
241  for (std::vector<unsigned int>::iterator it = LayersinBarrel.begin(); it != LayersinBarrel.end(); it++, i++) {
242  if ((*it) != 0 && i < BarrelLayerNumber)
243  if (recHitsinLayers[i] != 0)
244  LayersinRPC.push_back(i);
245  }
246  i = BarrelLayerNumber;
247  for (std::vector<unsigned int>::iterator it = LayersinEndcap.begin(); it != LayersinEndcap.end(); it++, i++) {
248  if ((*it) != 0 && i < (BarrelLayerNumber + EachEndcapLayerNumber * 2))
249  if (recHitsinLayers[i] != 0)
250  LayersinRPC.push_back(i);
251  }
252 
253  if (!LayersinRPC.empty()) {
254  // Initiate and call recHit Finder
257  }
258  LayersinRPC.clear();
259  }
260 
261  if (isSpecialLayers == false) {
262  cout << "Not ready for not SpecialLayers for Cosmic case" << endl;
263  LayersinRPC.clear();
264  }
265 }
std::vector< unsigned int > LayersinEndcap
std::vector< unsigned int > LayersinBarrel
RPCCosmicSeedrecHitFinder * RPCCosmicrecHitFinderRef
void setLayers(const std::vector< unsigned int > &Layers)
#define EachEndcapLayerNumber
std::vector< unsigned int > LayersinRPC
#define BarrelLayerNumber
tuple cout
Definition: gather_cfg.py:144
unsigned int recHitsinLayers[12]
void RPCSeedLayerFinder::fillLayers ( )
private

Definition at line 77 of file RPCSeedLayerFinder.cc.

References BarrelLayerNumber, gather_cfg::cout, EachEndcapLayerNumber, and mps_fire::i.

77  {
78  if (isSpecialLayers == false && isMixBarrelwithEndcap == false) {
79  for (std::vector<unsigned int>::iterator NumberofLayersinBarrel = RangeofLayersinBarrel.begin();
80  NumberofLayersinBarrel != RangeofLayersinBarrel.end();
81  NumberofLayersinBarrel++) {
82  // find N layers out of 6 Barrel Layers to fill to SeedinRPC
83  unsigned int NumberofLayers = *NumberofLayersinBarrel;
84  if (NumberofLayers < 1 || NumberofLayers > BarrelLayerNumber)
85  continue;
86  int type = 0; // type=0 for barrel
87  LayersinRPC.clear();
88  SpecialLayers(-1, NumberofLayers, type);
89  LayersinRPC.clear();
90  }
91 
92  for (std::vector<unsigned int>::iterator NumberofLayersinEndcap = RangeofLayersinEndcap.begin();
93  NumberofLayersinEndcap != RangeofLayersinEndcap.end();
94  NumberofLayersinEndcap++) {
95  unsigned int NumberofLayers = *NumberofLayersinEndcap;
96  if (NumberofLayers < 1 || NumberofLayers > EachEndcapLayerNumber)
97  continue;
98  int type = 1; // type=1 for endcap
99  // for -Z layers
100  LayersinRPC.clear();
101  SpecialLayers(BarrelLayerNumber - 1, NumberofLayers, type);
102  LayersinRPC.clear();
103  //for +Z layers
104  LayersinRPC.clear();
105  SpecialLayers(BarrelLayerNumber + EachEndcapLayerNumber - 1, NumberofLayers, type);
106  LayersinRPC.clear();
107  }
108  }
109 
110  if (isSpecialLayers == true && isMixBarrelwithEndcap == false) {
111  // Fill barrel layer for seed
112  bool EnoughforBarrel = true;
113  unsigned int i = 0;
114  LayersinRPC.clear();
115  for (std::vector<unsigned int>::iterator it = LayersinBarrel.begin(); it != LayersinBarrel.end(); it++, i++) {
116  if ((*it) != 0 && i < BarrelLayerNumber) {
117  if (recHitsinLayers[i] != 0)
118  LayersinRPC.push_back(i);
119  else {
120  cout << "Not recHits in special Barrel layer " << i << endl;
121  EnoughforBarrel = false;
122  }
123  }
124  }
125  if (EnoughforBarrel && (!LayersinRPC.empty())) {
126  // Initiate and call recHit Finder
129  }
130  LayersinRPC.clear();
131 
132  // Fill -Z and +Z endcap layer
133  bool EnoughforEndcap = true;
134 
135  // Fill endcap- layer for seed
136  i = BarrelLayerNumber;
137  EnoughforEndcap = true;
138  LayersinRPC.clear();
139  for (std::vector<unsigned int>::iterator it = LayersinEndcap.begin(); it != LayersinEndcap.end(); it++, i++) {
140  if ((*it) != 0 && i < (BarrelLayerNumber + EachEndcapLayerNumber)) {
141  if (recHitsinLayers[i] != 0)
142  LayersinRPC.push_back(i);
143  else {
144  cout << "Not recHits in special Endcap " << (i - BarrelLayerNumber) << endl;
145  EnoughforEndcap = false;
146  }
147  }
148  }
149  if (EnoughforEndcap && (!LayersinRPC.empty())) {
150  // Initiate and call recHit Finder
153  }
154  LayersinRPC.clear();
155 
156  //Fill endcap+ layer for seed
157  i = BarrelLayerNumber;
158  EnoughforEndcap = true;
159  LayersinRPC.clear();
160  for (std::vector<unsigned int>::iterator it = LayersinEndcap.begin(); it != LayersinEndcap.end(); it++, i++) {
161  if ((*it) != 0 && i >= (BarrelLayerNumber + EachEndcapLayerNumber) &&
162  i < (BarrelLayerNumber + EachEndcapLayerNumber * 2)) {
163  if (recHitsinLayers[i] != 0)
164  LayersinRPC.push_back(i);
165  else {
166  cout << "Not recHits in special Endcap " << i << endl;
167  EnoughforEndcap = false;
168  }
169  }
170  }
171  if (EnoughforEndcap && (!LayersinRPC.empty())) {
172  // Initiate and call recHit Finder
175  }
176  LayersinRPC.clear();
177  }
178 
179  if (isMixBarrelwithEndcap == true) {
180  cout << " Mix is not ready for non-cosmic case" << endl;
181  LayersinRPC.clear();
182  }
183 }
std::vector< unsigned int > LayersinEndcap
std::vector< unsigned int > LayersinBarrel
std::vector< unsigned int > RangeofLayersinBarrel
std::vector< unsigned int > RangeofLayersinEndcap
RPCSeedrecHitFinder * RPCrecHitFinderRef
#define EachEndcapLayerNumber
std::vector< unsigned int > LayersinRPC
#define BarrelLayerNumber
tuple cout
Definition: gather_cfg.py:144
unsigned int recHitsinLayers[12]
void setLayers(const std::vector< unsigned int > &Layers)
void SpecialLayers(int last, unsigned int NumberofLayers, int type)
void RPCSeedLayerFinder::setInput ( MuonRecHitContainer(&)  recHitsRPC[12])

Definition at line 36 of file RPCSeedLayerFinder.cc.

References mps_fire::i, RPCLayerNumber, and findQualityFiles::size.

36  {
37  for (unsigned int i = 0; i < RPCLayerNumber; i++)
38  recHitsinLayers[i] = recHitsRPC[i].size();
39 
40  // Set the signal open
41  isInputset = true;
42 }
#define RPCLayerNumber
unsigned int recHitsinLayers[12]
tuple size
Write out results.
void RPCSeedLayerFinder::setOutput ( RPCSeedrecHitFinder Ref = nullptr,
RPCCosmicSeedrecHitFinder CosmicRef = nullptr 
)

Definition at line 46 of file RPCSeedLayerFinder.cc.

46  {
48  RPCCosmicrecHitFinderRef = CosmicRef;
49  isOutputset = true;
50 }
RPCCosmicSeedrecHitFinder * RPCCosmicrecHitFinderRef
RPCSeedrecHitFinder * RPCrecHitFinderRef
void RPCSeedLayerFinder::SpecialLayers ( int  last,
unsigned int  NumberofLayers,
int  type 
)
private

Definition at line 267 of file RPCSeedLayerFinder.cc.

References BarrelLayerNumber, gather_cfg::cout, EachEndcapLayerNumber, mps_fire::i, and isotrackApplyRegressor::k.

267  {
268  // check type, 0=barrel, 1=endcap, 2=mix
269 
270  // barrel has 6 layers
271  if (type == 0) {
272  if (NumberofLayers > BarrelLayerNumber) {
273  cout << "NumberofLayers larger than max layers in barrel" << endl;
274  return;
275  }
276  for (unsigned int i = (last + 1); i <= (BarrelLayerNumber - NumberofLayers + LayersinRPC.size()); i++) {
277  if (recHitsinLayers[i] != 0) {
278  LayersinRPC.push_back(i);
279  last = i;
280  if (LayersinRPC.size() < NumberofLayers)
281  SpecialLayers(last, NumberofLayers, type);
282  else {
283  if (checkConstrain()) {
284  cout << "Find special barrel layers: ";
285  for (unsigned int k = 0; k < NumberofLayers; k++)
286  cout << LayersinRPC[k] << " ";
287  cout << endl;
288  // Initiate and call recHit Finder
291  } else
292  cout << "The layers don't contain all layers in constrain" << endl;
293  }
294  LayersinRPC.pop_back();
295  }
296  }
297  }
298 
299  // endcap has 3 layers for each -Z and +Z
300  if (type == 1) {
301  if (NumberofLayers > EachEndcapLayerNumber) {
302  cout << "NumberofLayers larger than max layers in endcap" << endl;
303  return;
304  }
306  (last == (BarrelLayerNumber + EachEndcapLayerNumber - 1) && !LayersinRPC.empty())) {
307  // For -Z case
308  for (unsigned int i = (last + 1);
309  i <= (BarrelLayerNumber + EachEndcapLayerNumber - NumberofLayers + LayersinRPC.size());
310  i++) {
311  if (recHitsinLayers[i] != 0) {
312  LayersinRPC.push_back(i);
313  last = i;
314  if (LayersinRPC.size() < NumberofLayers)
315  SpecialLayers(last, NumberofLayers, type);
316  else {
317  cout << "Find special -Z endcap layers: ";
318  for (unsigned int k = 0; k < NumberofLayers; k++)
319  cout << LayersinRPC[k] << " ";
320  cout << endl;
321  // Initiate and call recHit Finder
324  }
325  LayersinRPC.pop_back();
326  }
327  }
328  } else {
329  // For +Z case
330  for (unsigned int i = (last + 1);
331  i <= (BarrelLayerNumber + EachEndcapLayerNumber * 2 - NumberofLayers + LayersinRPC.size());
332  i++) {
333  if (recHitsinLayers[i] != 0) {
334  LayersinRPC.push_back(i);
335  last = i;
336  if (LayersinRPC.size() < NumberofLayers)
337  SpecialLayers(last, NumberofLayers, type);
338  else {
339  cout << "Find special +Z endcap layers: ";
340  for (unsigned int k = 0; k < NumberofLayers; k++)
341  cout << LayersinRPC[k] << " ";
342  cout << endl;
343  // Initiate and call recHit Finder
346  }
347  LayersinRPC.pop_back();
348  }
349  }
350  }
351  }
352 }
RPCSeedrecHitFinder * RPCrecHitFinderRef
#define EachEndcapLayerNumber
std::vector< unsigned int > LayersinRPC
#define BarrelLayerNumber
tuple cout
Definition: gather_cfg.py:144
tuple last
Definition: dqmdumpme.py:56
unsigned int recHitsinLayers[12]
void setLayers(const std::vector< unsigned int > &Layers)
void SpecialLayers(int last, unsigned int NumberofLayers, int type)
void RPCSeedLayerFinder::unsetInput ( )

Definition at line 44 of file RPCSeedLayerFinder.cc.

44 { isInputset = false; }

Member Data Documentation

std::vector<unsigned int> RPCSeedLayerFinder::constrainedLayersinBarrel
private

Definition at line 63 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isConfigured
private

Definition at line 65 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isCosmic
private

Definition at line 56 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isInputset
private

Definition at line 66 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isMixBarrelwithEndcap
private

Definition at line 57 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isOutputset
private

Definition at line 67 of file RPCSeedLayerFinder.h.

bool RPCSeedLayerFinder::isSpecialLayers
private

Definition at line 60 of file RPCSeedLayerFinder.h.

std::vector<unsigned int> RPCSeedLayerFinder::LayersinBarrel
private

Definition at line 62 of file RPCSeedLayerFinder.h.

std::vector<unsigned int> RPCSeedLayerFinder::LayersinEndcap
private

Definition at line 61 of file RPCSeedLayerFinder.h.

std::vector<unsigned int> RPCSeedLayerFinder::LayersinRPC
private

Definition at line 69 of file RPCSeedLayerFinder.h.

std::vector<unsigned int> RPCSeedLayerFinder::RangeofLayersinBarrel
private

Definition at line 58 of file RPCSeedLayerFinder.h.

std::vector<unsigned int> RPCSeedLayerFinder::RangeofLayersinEndcap
private

Definition at line 59 of file RPCSeedLayerFinder.h.

unsigned int RPCSeedLayerFinder::recHitsinLayers[12]
private

Definition at line 71 of file RPCSeedLayerFinder.h.

RPCCosmicSeedrecHitFinder* RPCSeedLayerFinder::RPCCosmicrecHitFinderRef
private

Definition at line 54 of file RPCSeedLayerFinder.h.

RPCSeedrecHitFinder* RPCSeedLayerFinder::RPCrecHitFinderRef
private

Definition at line 53 of file RPCSeedLayerFinder.h.