ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Attributes | List of all members
LArSamples::FilterParams Class Reference

#include <FilterParams.h>

Collaboration diagram for LArSamples::FilterParams:

Public Member Functions

 FilterParams ()
 
 FilterParams (const FilterParams &other)
 
bool set (const char *selection)
 
void addRunRange (unsigned int run1, unsigned int run2)
 
void addEventRange (unsigned int event1, unsigned int event2)
 
void addLBRange (unsigned int lb1, unsigned int lb2)
 
void addHashIdRange (unsigned int hashId1, unsigned int hashId2)
 
void addRun (unsigned int run)
 
void addEvent (unsigned int event)
 
void addLB (unsigned int lb)
 
void addHashId (unsigned int hashId)
 
void addLayer (unsigned int layer)
 
void addGain (CaloGain::CaloGain gain)
 
void addRunEventFromData (const Data &data)
 
void addChannel (CaloId calo, int feedthrough, int slot, int channel)
 
void addChannels (const char *fileName)
 
void setChannelVeto (short veto=-1)
 
void addCalo (CaloId calo)
 
void addPartition (PartitionId part)
 
void setStatus (unsigned int status)
 
void setRequireConvergence (bool conv=true)
 
void setRequireSaturation (bool flag=true)
 
void setRequireNoSaturation (bool flag=true)
 
void setIndexParity (short parity)
 
bool pass (unsigned int hashId, const History &history, unsigned int k) const
 
bool passHash (unsigned int hashId) const
 
bool passCell (const CellInfo &info) const
 
bool passEvent (const Data &data) const
 
TString processToken (const TString &var, const TString &op, const TString &arg, const TString &oring="")
 

Static Public Member Functions

static bool splitToken (const TString &token, TString &var, TString &op, TString &arg)
 

Static Public Attributes

static const short m_saturation = 3800
 

Private Attributes

std::vector< UIntRangem_runs
 
std::vector< UIntRangem_events
 
std::vector< UIntRangem_hashIds
 
std::vector< UIntRangem_lbs
 
std::vector< CaloIdm_calos
 
std::vector< PartitionIdm_partitions
 
std::vector< ChannelSpecm_channels
 
std::vector< int > m_layers
 
std::vector< CaloGain::CaloGainm_gains
 
unsigned int m_status
 
unsigned int m_requireSat
 
std::map< TString, FuncCutm_cuts
 
bool m_requireConvergence
 
int m_channelSel
 
short m_indexParity
 

Detailed Description

Definition at line 50 of file FilterParams.h.

Constructor & Destructor Documentation

◆ FilterParams() [1/2]

LArSamples::FilterParams::FilterParams ( )
inline

Definition at line 54 of file FilterParams.h.

54  :
55  m_status(0xffffffff), m_requireSat(0),

◆ FilterParams() [2/2]

FilterParams::FilterParams ( const FilterParams other)

Definition at line 43 of file FilterParams.cxx.

43  :
44  m_runs(other.m_runs), m_events(other.m_events), m_hashIds(other.m_hashIds), m_lbs(other.m_lbs),
45  m_calos(other.m_calos), m_partitions(other.m_partitions), m_channels(other.m_channels), m_layers(other.m_layers),
46  m_gains(other.m_gains), m_status(other.m_status), m_requireSat(other.m_requireSat),
47  m_cuts(other.m_cuts), m_requireConvergence(other.m_requireConvergence),
48  m_channelSel(other.m_channelSel), m_indexParity(other.m_indexParity)
49 { }

Member Function Documentation

◆ addCalo()

void LArSamples::FilterParams::addCalo ( CaloId  calo)
inline

Definition at line 80 of file FilterParams.h.

80 { m_calos.push_back(calo); }

◆ addChannel()

void FilterParams::addChannel ( CaloId  calo,
int  feedthrough,
int  slot,
int  channel 
)

Definition at line 373 of file FilterParams.cxx.

374 {
375  m_channels.emplace_back(calo, feedThrough, slot, channel);
376 }

◆ addChannels()

void FilterParams::addChannels ( const char *  fileName)

Definition at line 379 of file FilterParams.cxx.

380 {
381  // bad channels list in usual format: 1 per line, | barrel_ec | pos_neg | ft | slot | channel | pb |
382 
383  ifstream f(fileName);
384  int barrel_ec, pos_neg, ft, slot, channel, status;
385  std::string pb;
386 
387  while (!f.eof()) {
388  f >> barrel_ec >> pos_neg >> ft >> slot >> channel >> status >> pb;
389  //cout << barrel_ec << " " << pos_neg << " " << ft << " " << slot << " " << channel << " " << pb << endl;
390  CaloId calo = UNKNOWN_CALO;
391  if (barrel_ec == 0 && pos_neg == 0) calo = EMB_C;
392  if (barrel_ec == 0 && pos_neg == 1) calo = EMB_A;
393  if (barrel_ec == 1 && pos_neg == 0) calo = EMEC_C;
394  if (barrel_ec == 1 && pos_neg == 1) calo = EMEC_A;
395  if (calo != UNKNOWN_CALO) addChannel(calo, ft, slot, channel);
396  }
397 
398 /* for (unsigned int k = 0; k < m_channels.size(); k++)
399  cout << k << " " << Id::str(m_channels[k].calo) << " " << m_channels[k].feedThrough << " " << m_channels[k].slot << " " << m_channels[k].channel << endl;*/
400 }

◆ addEvent()

void LArSamples::FilterParams::addEvent ( unsigned int  event)
inline

Definition at line 68 of file FilterParams.h.

68 { m_events.push_back(UIntRange(event, event + 1)); }

◆ addEventRange()

void LArSamples::FilterParams::addEventRange ( unsigned int  event1,
unsigned int  event2 
)
inline

Definition at line 63 of file FilterParams.h.

63 { m_events.push_back(UIntRange(event1, event2)); }

◆ addGain()

void LArSamples::FilterParams::addGain ( CaloGain::CaloGain  gain)
inline

Definition at line 72 of file FilterParams.h.

72 { m_gains.push_back(gain); }

◆ addHashId()

void LArSamples::FilterParams::addHashId ( unsigned int  hashId)
inline

Definition at line 70 of file FilterParams.h.

70 { m_hashIds.push_back(UIntRange(hashId, hashId + 1)); }

◆ addHashIdRange()

void LArSamples::FilterParams::addHashIdRange ( unsigned int  hashId1,
unsigned int  hashId2 
)
inline

Definition at line 65 of file FilterParams.h.

65 { m_hashIds.push_back(UIntRange(hashId1, hashId2)); }

◆ addLayer()

void LArSamples::FilterParams::addLayer ( unsigned int  layer)
inline

Definition at line 71 of file FilterParams.h.

71 { m_layers.push_back(layer); }

◆ addLB()

void LArSamples::FilterParams::addLB ( unsigned int  lb)
inline

Definition at line 69 of file FilterParams.h.

69 { m_lbs.push_back(UIntRange(lb, lb + 1)); }

◆ addLBRange()

void LArSamples::FilterParams::addLBRange ( unsigned int  lb1,
unsigned int  lb2 
)
inline

Definition at line 64 of file FilterParams.h.

64 { m_lbs.push_back(UIntRange(lb1, lb2)); }

◆ addPartition()

void LArSamples::FilterParams::addPartition ( PartitionId  part)
inline

Definition at line 81 of file FilterParams.h.

81 { m_partitions.push_back(part); }

◆ addRun()

void LArSamples::FilterParams::addRun ( unsigned int  run)
inline

Definition at line 67 of file FilterParams.h.

67 { m_runs.push_back(UIntRange(run, run + 1)); }

◆ addRunEventFromData()

void FilterParams::addRunEventFromData ( const Data data)

Definition at line 366 of file FilterParams.cxx.

367 {
368  addRun(data.run());
369  addEvent(data.event());
370 }

◆ addRunRange()

void LArSamples::FilterParams::addRunRange ( unsigned int  run1,
unsigned int  run2 
)
inline

Definition at line 62 of file FilterParams.h.

62 { m_runs.push_back(UIntRange(run1, run2)); }

◆ pass()

bool FilterParams::pass ( unsigned int  hashId,
const History history,
unsigned int  k 
) const

Definition at line 403 of file FilterParams.cxx.

404 {
405  if (!passHash(hashId)) return false;
406  if (!passCell(*history.cellInfo())) return false;
407  if (!passEvent(*history.data(k))) return false;
408  return true;
409 }

◆ passCell()

bool FilterParams::passCell ( const CellInfo info) const

Definition at line 482 of file FilterParams.cxx.

483 {
484  if (!m_calos.empty()) {
485  bool pass = false;
486  for (unsigned int k = 0; k < m_calos.size(); k++)
487  if (Id::matchCalo(info.calo(), m_calos[k])) {
488  pass = true;
489  break;
490  }
491  if (!pass) return false;
492  }
493 
494  if (!m_partitions.empty()) {
495  bool pass = false;
496  for (unsigned int k = 0; k < m_partitions.size(); k++)
497  if (info.partition() == m_partitions[k]) {
498  pass = true;
499  break;
500  }
501  if (!pass) return false;
502  }
503 
504  if (!m_layers.empty()) {
505  bool found = false;
506  for (unsigned int k = 0; k < m_layers.size(); k++)
507  if (m_layers[k] == info.layer()) {
508  found = true;
509  break;
510  }
511  if (!found) return false;
512  }
513 
514  if (!m_channels.empty()) {
515  bool found = false;
516  for (unsigned int k = 0; k < m_channels.size(); k++)
517  if (m_channels[k].match(info)) {
518  found = true;
519  break;
520  }
521  //cout << found << " " << m_channelSel << endl;
522  if (!found && m_channelSel == +1) return false;
523  if ( found && m_channelSel == -1) return false;
524  }
525 
526  return true;
527 }

◆ passEvent()

bool FilterParams::passEvent ( const Data data) const

Definition at line 427 of file FilterParams.cxx.

428 {
429  for (const auto& p : m_cuts) {
430  if (!p.second.pass(data)) return false;
431  }
432 
433  if (m_requireConvergence && data.adcMax() < 0) return false;
434  if (!(m_status & data.status()) && data.status()) return false;
435  if ((m_requireSat & 1) && data.maxSample() < m_saturation) return false;
436  if ((m_requireSat & 2) && data.maxSample() > m_saturation) return false;
437  if (m_indexParity > 0 && (data.index() % 2) != (m_indexParity % 2)) return false;
438  if (!m_runs.empty()) {
439  bool pass = false;
440  for (unsigned int k = 0; k < m_runs.size(); k++)
441  if (m_runs[k].first <= data.run() && data.run() < m_runs[k].second) {
442  pass = true;
443  break;
444  }
445  if (!pass) return false;
446  }
447 
448  if (!m_events.empty()) {
449  bool pass = false;
450  for (unsigned int k = 0; k < m_events.size(); k++)
451  if (m_events[k].first <= data.event() && data.event() < m_events[k].second) {
452  pass = true;
453  break;
454  }
455  if (!pass) return false;
456  }
457 
458  if (!m_lbs.empty()) {
459  bool pass = false;
460  for (unsigned int k = 0; k < m_lbs.size(); k++)
461  if (m_lbs[k].first <= data.lumiBlock() && data.lumiBlock() < m_lbs[k].second) {
462  pass = true;
463  break;
464  }
465  if (!pass) return false;
466  }
467 
468  if (!m_gains.empty()) {
469  bool pass = false;
470  for (unsigned int k = 0; k < m_gains.size(); k++)
471  if (m_gains[k] == data.gain()) {
472  pass = true;
473  break;
474  }
475  if (!pass) return false;
476  }
477 
478  return true;
479 }

◆ passHash()

bool FilterParams::passHash ( unsigned int  hashId) const

Definition at line 412 of file FilterParams.cxx.

413 {
414  if (!m_hashIds.empty()) {
415  bool pass = false;
416  for (unsigned int k = 0; k < m_hashIds.size(); k++)
417  if (m_hashIds[k].first <= (int)hashId && (int)hashId < m_hashIds[k].second) {
418  pass = true;
419  break;
420  }
421  if (!pass) return false;
422  }
423  return true;
424 }

◆ processToken()

TString FilterParams::processToken ( const TString &  var,
const TString &  op,
const TString &  arg,
const TString &  oring = "" 
)

Definition at line 163 of file FilterParams.cxx.

164 {
165  //cout << var << " " << op << " " << arg << " " << oring << endl;
166  if (var == "status" && op == "==") {
167  if (m_status != 0xffffffff) return "Variable " + var + " already set";
168  setStatus(arg.Atoi());
169  return "";
170  }
171  if (var == "saturate" && op == "==") {
172  if (m_requireSat != 0) return "Variable " + var + " already set";
173  if (arg == "yes") { setRequireSaturation(); cout << "---> setRequireSaturation" << endl; return ""; }
174  if (arg == "no") { setRequireNoSaturation(); cout << "---> setRequireNoSaturation" << endl; return ""; }
175  return "Invalid argument " + arg;
176  }
177  if (var == "cell") {
178  if (oring != "cell" && !m_channels.empty()) return "Variable " + var + " already set";
179  if (op == "==") {
180  if (m_channelSel == -1) return "Cannot have positive channel selections and vetos in the same command";
181  cout << "---> set channel sel == 1" << endl;
182  m_channelSel = 1;
183  }
184  if (op == "!=") {
185  if (m_channelSel == +1) return "Cannot have positive channel selections and vetos in the same command";
186  cout << "---> set channel sel == -1" << endl;
187  m_channelSel = -1;
188  }
189  TObjArray* chTokens = nullptr;
190  if (TString(arg[0]) == "[" || TString(arg[arg.Length() - 1]) == "]")
191  chTokens = TString(arg(1, arg.Length() - 2)).Tokenize(",");
192  else
193  chTokens = arg.Tokenize("/");
194  if (chTokens->GetEntries() != 4) { delete chTokens; return "Invalid argument " + arg; }
195  TString calo = ((TObjString*)chTokens->At(0))->String();
196  TString ft = ((TObjString*)chTokens->At(1))->String();
197  TString slot = ((TObjString*)chTokens->At(2))->String();
198  TString channel = ((TObjString*)chTokens->At(3))->String();
199  delete chTokens;
200  CaloId caloId = Id::caloId(calo);
201  if (caloId == UNKNOWN_CALO) return "Invalid argument " + arg;
202  int ftNum = -99, slotNum = -99, channelNum = -99;
203  if (ft.IsDigit())
204  ftNum = ft.Atoi();
205  else if (ft == "?" || ft == "x" || ft == "-1")
206  ftNum = -1;
207  if (ftNum == -99) return "Invalid FT argument " + ft;
208  if (slot.IsDigit())
209  slotNum = slot.Atoi();
210  else if (slot == "?" || slot == "x" || slot == "-1")
211  slotNum = -1;
212  if (slotNum == -99) return "Invalid slot argument " + slot;
213  if (channel.IsDigit())
214  channelNum = channel.Atoi();
215  else if (channel == "?" || channel == "x" || channel == "-1")
216  channelNum = -1;
217  if (channelNum == -99) return "Invalid channel argument " + channel;
218  addChannel(caloId, ftNum, slotNum, channelNum);
219  cout << "---> addChannel " << Id::str(caloId) << " " << ftNum << " " << slotNum << " " << channelNum << endl;
220  return "";
221  }
222  if (var == "calo" && op == "==") {
223  if (oring != "calo" && !m_calos.empty()) return "Variable " + var + " already set";
224  CaloId caloId = Id::caloId(arg);
225  if (caloId == UNKNOWN_CALO) return "Invalid argument " + arg;
226  addCalo(caloId);
227  cout << "---> addCalo " << Id::str(caloId) << endl;
228  return "";
229  }
230  if (var == "partition" && op == "==") {
231  if (oring != "partition" && !m_calos.empty()) return "Variable " + var + " already set";
232  PartitionId partId = Id::partitionId(arg);
233  if (partId == UNKNOWN_PARTITION) return "Invalid argument " + arg;
234  addPartition(partId);
235  cout << "---> addPartition " << Id::str(partId) << endl;
236  return "";
237  }
238  if (var == "layer" && op == "==") {
239  if (oring != "layer" && !m_layers.empty()) return "Variable " + var + " already set";
240  if (!arg.IsDigit()) return "Invalid argument " + arg;
241  addLayer(arg.Atoi());
242  cout << "---> addLayer " << arg.Atoi() << endl;
243  return "";
244  }
245  if (var == "gain" && op == "==") {
246  if (oring != "gain" && !m_gains.empty()) return "Variable " + var + " already set";
248  if (arg == "HIGH") gain = CaloGain::LARHIGHGAIN;
249  if (arg == "MEDIUM") gain = CaloGain::LARMEDIUMGAIN;
250  if (arg == "LOW") gain = CaloGain::LARLOWGAIN;
251  if (gain == CaloGain::UNKNOWNGAIN) return "Invalid gain argument " + arg + ", expecting HIGH/MEDIUM/LOW";
252  addGain(gain);
253  cout << "---> addGain " << Data::gainStr(gain) << endl;
254  return "";
255  }
256  if (var == "runNum" && op == "==") {
257  if (oring != "runNum" && !m_runs.empty()) return "Variable " + var + " already set";
258  if (!arg.IsDigit()) return "Invalid argument " + arg;
259  addRun(arg.Atoi());
260  cout << "---> addRun " << arg.Atoi() << endl;
261  return "";
262  }
263  if (var == "eventNum" && op == "==") {
264  if (oring != "eventNum" && !m_events.empty()) return "Variable " + var + " already set";
265  if (!arg.IsDigit()) return "Invalid argument " + arg;
266  addEvent(arg.Atoi());
267  cout << "---> addEvent " << arg.Atoi() << endl;
268  return "";
269  }
270  if (var == "eventSpec" && op == "==") {
271  if (oring != "eventSpec" && !m_events.empty()) return "Variable " + var + " already set";
272  TObjArray* evTokens = arg.Tokenize("/");
273  if (evTokens->GetEntries() != 2) { delete evTokens; return "Invalid argument " + arg; }
274  TString evt = ((TObjString*)evTokens->At(0))->String();
275  TString run = ((TObjString*)evTokens->At(1))->String();
276  delete evTokens;
277  if (!run.IsDigit()) return "Invalid run argument in " + arg;
278  if (!evt.IsDigit()) return "Invalid event argument in " + arg;
279  addRun(run.Atoi());
280  addEvent(evt.Atoi());
281  cout << "---> addRun/addEvent " << run.Atoi() << "/" << evt.Atoi() << endl;
282  return "";
283  }
284  if (var == "eventFile" && op == "==") {
285  if (oring != "eventFile" && !m_events.empty()) return "Variable " + var + " already set";
286  ifstream fs(arg);
287  if (!fs.is_open() || fs.eof()) return "File " + arg + " does not contain a valid event list";
288  while (!fs.eof()) {
289  char line[200];
290  fs.getline(line, 200);
291  //line = line.Substr(0, line.Length() - 1); // remove trailing linefeed
292  TObjArray* evTokens = arg.Tokenize("/");
293  if (evTokens->GetEntries() != 2) { delete evTokens; return "Invalid argument " + arg; }
294  TString evt = ((TObjString*)evTokens->At(0))->String();
295  TString run = ((TObjString*)evTokens->At(1))->String();
296  delete evTokens;
297  if (!run.IsDigit()) return "Invalid run argument in " + arg;
298  if (!evt.IsDigit()) return "Invalid event argument in " + arg;
299  addRun(run.Atoi());
300  addEvent(evt.Atoi());
301  cout << "---> addRun/addEvent " << run.Atoi() << "/" << evt.Atoi() << endl;
302  }
303  fs.close();
304  }
305  if (var == "lb" && op == "==") {
306  if (oring != "lb" && !m_lbs.empty()) return "Variable " + var + " already set";
307  if (!arg.IsDigit()) return "Invalid argument " + arg;
308  addLB(arg.Atoi());
309  cout << "---> addLB " << arg.Atoi() << endl;
310  return "";
311  }
312  if (var == "hashId" && op == "==") {
313  if (oring != "hashId" && !m_hashIds.empty()) return "Variable " + var + " already set";
314  if (!arg.IsDigit()) return "Invalid argument " + arg;
315  addHashId(arg.Atoi());
316  cout << "---> addHashId " << arg.Atoi() << endl;
317  return "";
318  }
319  if (var == "hashId" && op == "<") {
320  if (oring != "hashId" && !m_hashIds.empty()) return "Variable " + var + " already set";
321  if (!arg.IsDigit()) return "Invalid argument " + arg;
322  addHashIdRange(0, arg.Atoi());
323  cout << "---> addHashIdRange 0 " << arg.Atoi() << endl;
324  return "";
325  }
326  if (var == "indexParity" && op == "==") {
327  if (oring != "") return "Variable " + var + " cannot be or'ed";
328  if (!arg.IsDigit()) return "Invalid argument " + arg;
329  setIndexParity(arg.Atoi());
330  cout << "---> indexParity " << arg.Atoi() << endl;
331  return "";
332  }
333 
334  std::vector<TString> vars;
335  std::vector<DataFuncSet> funcs;
336  std::vector<DataFuncArgs> args;
337  bool status = MonitorBase::parseVariables(var, vars, funcs, args);
338  if (status && vars.size() == 1) {
340  if (cut == m_cuts.end()) {
341  m_cuts[var] = FuncCut(funcs[0], args[0]);
342  cut = m_cuts.find(var);
343  }
344  if (op == ">") {
345  if (cut->second.gotMin()) return "Min value for variable " + var + " was already set";
346  cut->second.min = arg.Atof();
347  cout << "---> set " << var << " >= " << arg.Atof() << endl;
348  }
349  if (op == "<") {
350  if (cut->second.gotMax()) return "Max value for variable " + var + " was already set";
351  cut->second.max = arg.Atof();
352  cout << "---> set " << var << " < " << arg.Atof() << endl;
353  }
354  if (op == "==") {
355  if (cut->second.gotMin() || cut->second.gotMax()) return "A cut for variable " + var + " was already set";
356  cut->second.setEqual(arg.Atof());
357  cout << "---> set " << var << " == " << arg.Atof() << endl;
358  }
359  return "";
360  }
361 
362  return "Invalid variable or operator";
363 }

◆ set()

bool FilterParams::set ( const char *  selection)

Definition at line 52 of file FilterParams.cxx.

53 {
54  TString error = "Allowed syntax is \" condition1 && condition2 && ... && conditionN\n";
55  error += "where conditionX is of the form status==XXX, saturate==yes|no, energy>XX, eta>XX, eta<XX, adcMax>XX, sampleMax>XX\n";
56  error += "chi2<XX, time>XX, time<XX, converged=true, calo==XX, cell==[FT,slot,channel], run==XX, event=XX\n";
57  error += "or an or list (item1 || item2 ||... itemN) of such statements.";
58 
59  TString sel = selection, var = "", arg = "", op = "";
60 
61  sel.ReplaceAll(" ", "");
62  TObjArray* tokens = sel.Tokenize("&&");
63  for (int i = 0; i < tokens->GetEntries(); i++) {
64  TString& token = ((TObjString*)tokens->At(i))->String();
65  if (TString(token[0]) == "(" && TString(token[token.Length() - 1]) == ")") {
66  TObjArray* orTokens = TString(token(1, token.Length() - 2)).Tokenize("||");
67  TString oring = "";
68  for (int j = 0; j < orTokens->GetEntries(); j++) {
69  TString& orToken = ((TObjString*)orTokens->At(j))->String();
70  if (!splitToken(orToken, var, op, arg)) {
71  cout << "could not process token " << orToken << endl << error << endl;
72  delete tokens;
73  delete orTokens;
74  return false;
75  }
76  if (oring != "" && oring != var) {
77  cout << "inconsistent or-list " << token << endl << error << endl;
78  delete orTokens;
79  delete tokens;
80  return false;
81  }
82  TString result = processToken(var, op, arg, oring);
83  if (result != "") {
84  cout << "Error while processing token " << orToken << " : " << result << endl << error << endl;
85  delete tokens;
86  delete orTokens;
87  return false;
88  }
89  if (oring == "")
90  oring = var;
91  }
92  delete orTokens;
93  continue;
94  }
95  if (!splitToken(token, var, op, arg)) {
96  cout << "could not process token " << token << endl << error << endl;
97  delete tokens;
98  return false;
99  }
100  TString result = processToken(var, op, arg);
101  if (result != "") {
102  cout << "Error while processing token " << token << " : " << result << endl << error << endl;
103  delete tokens;
104  return false;
105  }
106  }
107  delete tokens;
108  return true;
109 }

◆ setChannelVeto()

void LArSamples::FilterParams::setChannelVeto ( short  veto = -1)
inline

Definition at line 78 of file FilterParams.h.

78 { m_channelSel = veto; } // apply channelList as Veto (true) or positive filter (false)

◆ setIndexParity()

void LArSamples::FilterParams::setIndexParity ( short  parity)
inline

Definition at line 87 of file FilterParams.h.

87 { m_indexParity = parity; }

◆ setRequireConvergence()

void LArSamples::FilterParams::setRequireConvergence ( bool  conv = true)
inline

Definition at line 84 of file FilterParams.h.

◆ setRequireNoSaturation()

void LArSamples::FilterParams::setRequireNoSaturation ( bool  flag = true)
inline

Definition at line 86 of file FilterParams.h.

86 { m_requireSat = m_requireSat | (flag ? 12 : 0); }

◆ setRequireSaturation()

void LArSamples::FilterParams::setRequireSaturation ( bool  flag = true)
inline

Definition at line 85 of file FilterParams.h.

85 { m_requireSat = m_requireSat | (flag ? 1 : 0); }

◆ setStatus()

void LArSamples::FilterParams::setStatus ( unsigned int  status)
inline

Definition at line 82 of file FilterParams.h.

82 { m_status = status; }

◆ splitToken()

bool FilterParams::splitToken ( const TString &  token,
TString &  var,
TString &  op,
TString &  arg 
)
static

Definition at line 112 of file FilterParams.cxx.

113 {
114  //cout << token << endl;
115  if (token.Index("!=") >= 0) {
116  TObjArray* neTokens = token.Tokenize("!=");
117  if (neTokens->GetEntries() == 2) {
118  var = ((TObjString*)neTokens->At(0))->String();
119  arg = ((TObjString*)neTokens->At(1))->String();
120  op = "!=";
121  delete neTokens;
122  return true;
123  }
124  delete neTokens;
125  }
126  if (token.Index("==") >= 0) {
127  TObjArray* eqTokens = token.Tokenize("==");
128  if (eqTokens->GetEntries() == 2) {
129  var = ((TObjString*)eqTokens->At(0))->String();
130  arg = ((TObjString*)eqTokens->At(1))->String();
131  op = "==";
132  delete eqTokens;
133  return true;
134  }
135  delete eqTokens;
136  }
137  if (token.Index(">") >= 0) {
138  TObjArray* gtTokens = token.Tokenize(">");
139  if (gtTokens->GetEntries() == 2) {
140  var = ((TObjString*)gtTokens->At(0))->String();
141  arg = ((TObjString*)gtTokens->At(1))->String();
142  op = ">";
143  delete gtTokens;
144  return true;
145  }
146  delete gtTokens;
147  }
148  if (token.Index("<") >= 0) {
149  TObjArray* ltTokens = token.Tokenize("<");
150  if (ltTokens->GetEntries() == 2) {
151  var = ((TObjString*)ltTokens->At(0))->String();
152  arg = ((TObjString*)ltTokens->At(1))->String();
153  op = "<";
154  delete ltTokens;
155  return true;
156  }
157  delete ltTokens;
158  }
159  return false;
160 }

Member Data Documentation

◆ m_calos

std::vector<CaloId> LArSamples::FilterParams::m_calos
private

Definition at line 108 of file FilterParams.h.

◆ m_channels

std::vector<ChannelSpec> LArSamples::FilterParams::m_channels
private

Definition at line 110 of file FilterParams.h.

◆ m_channelSel

int LArSamples::FilterParams::m_channelSel
private

Definition at line 120 of file FilterParams.h.

◆ m_cuts

std::map<TString, FuncCut> LArSamples::FilterParams::m_cuts
private

Definition at line 116 of file FilterParams.h.

◆ m_events

std::vector<UIntRange> LArSamples::FilterParams::m_events
private

Definition at line 107 of file FilterParams.h.

◆ m_gains

std::vector<CaloGain::CaloGain> LArSamples::FilterParams::m_gains
private

Definition at line 112 of file FilterParams.h.

◆ m_hashIds

std::vector<UIntRange> LArSamples::FilterParams::m_hashIds
private

Definition at line 107 of file FilterParams.h.

◆ m_indexParity

short LArSamples::FilterParams::m_indexParity
private

Definition at line 121 of file FilterParams.h.

◆ m_layers

std::vector<int> LArSamples::FilterParams::m_layers
private

Definition at line 111 of file FilterParams.h.

◆ m_lbs

std::vector<UIntRange> LArSamples::FilterParams::m_lbs
private

Definition at line 107 of file FilterParams.h.

◆ m_partitions

std::vector<PartitionId> LArSamples::FilterParams::m_partitions
private

Definition at line 109 of file FilterParams.h.

◆ m_requireConvergence

bool LArSamples::FilterParams::m_requireConvergence
private

Definition at line 119 of file FilterParams.h.

◆ m_requireSat

unsigned int LArSamples::FilterParams::m_requireSat
private

Definition at line 113 of file FilterParams.h.

◆ m_runs

std::vector<UIntRange> LArSamples::FilterParams::m_runs
private

Definition at line 107 of file FilterParams.h.

◆ m_saturation

const short LArSamples::FilterParams::m_saturation = 3800
static

Definition at line 100 of file FilterParams.h.

◆ m_status

unsigned int LArSamples::FilterParams::m_status
private

Definition at line 113 of file FilterParams.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArSamples::FilterParams::passCell
bool passCell(const CellInfo &info) const
Definition: FilterParams.cxx:482
LArSamples::FilterParams::addRun
void addRun(unsigned int run)
Definition: FilterParams.h:67
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
LArSamples::FilterParams::passEvent
bool passEvent(const Data &data) const
Definition: FilterParams.cxx:427
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
checkFileSG.line
line
Definition: checkFileSG.py:75
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
DeMoUpdate.lb1
def lb1
Definition: DeMoUpdate.py:1052
get_generator_info.result
result
Definition: get_generator_info.py:21
LArSamples::FilterParams::m_cuts
std::map< TString, FuncCut > m_cuts
Definition: FilterParams.h:116
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArSamples::Id::matchCalo
static bool matchCalo(CaloId id, CaloId idSpec)
Definition: CaloId.cxx:188
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
LArSamples::UNKNOWN_PARTITION
@ UNKNOWN_PARTITION
Definition: CaloId.h:31
LArSamples::FilterParams::m_indexParity
short m_indexParity
Definition: FilterParams.h:121
LArSamples::FilterParams::m_layers
std::vector< int > m_layers
Definition: FilterParams.h:111
LArSamples::History::cellInfo
const CellInfo * cellInfo() const
Definition: History.h:61
LArSamples::FilterParams::processToken
TString processToken(const TString &var, const TString &op, const TString &arg, const TString &oring="")
Definition: FilterParams.cxx:163
CaloGain::UNKNOWNGAIN
@ UNKNOWNGAIN
Definition: CaloGain.h:20
LArSamples::FilterParams::setRequireSaturation
void setRequireSaturation(bool flag=true)
Definition: FilterParams.h:85
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArSamples::Id::str
static TString str(CaloId id)
Definition: CaloId.cxx:15
LArSamples::FilterParams::m_events
std::vector< UIntRange > m_events
Definition: FilterParams.h:107
LArSamples::FilterParams::m_runs
std::vector< UIntRange > m_runs
Definition: FilterParams.h:107
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
LArSamples::FilterParams::addGain
void addGain(CaloGain::CaloGain gain)
Definition: FilterParams.h:72
LArSamples::Id::partitionId
static PartitionId partitionId(const TString &str)
Definition: CaloId.cxx:123
beamspotman.tokens
tokens
Definition: beamspotman.py:1284
LArSamples::FilterParams::m_channels
std::vector< ChannelSpec > m_channels
Definition: FilterParams.h:110
LArSamples::Id::caloId
static CaloId caloId(const TString &str)
Definition: CaloId.cxx:45
LArSamples::FilterParams::pass
bool pass(unsigned int hashId, const History &history, unsigned int k) const
Definition: FilterParams.cxx:403
LArSamples::FilterParams::splitToken
static bool splitToken(const TString &token, TString &var, TString &op, TString &arg)
Definition: FilterParams.cxx:112
LArSamples::FuncCut
Definition: FilterParams.h:37
LArSamples::History::data
const Data * data(unsigned int i) const
Definition: History.cxx:88
LArSamples::FilterParams::m_requireConvergence
bool m_requireConvergence
Definition: FilterParams.h:119
LArSamples::FilterParams::m_saturation
static const short m_saturation
Definition: FilterParams.h:100
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
LArSamples::MonitorBase::parseVariables
static bool parseVariables(TString varStr, std::vector< TString > &vars, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args)
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:147
LArSamples::FilterParams::addCalo
void addCalo(CaloId calo)
Definition: FilterParams.h:80
python.BunchSpacingUtils.lb
lb
Definition: BunchSpacingUtils.py:88
LArSamples::FilterParams::m_channelSel
int m_channelSel
Definition: FilterParams.h:120
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
LArSamples::EMB_C
@ EMB_C
Definition: CaloId.h:22
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArSamples::FilterParams::addHashId
void addHashId(unsigned int hashId)
Definition: FilterParams.h:70
LArSamples::FilterParams::m_partitions
std::vector< PartitionId > m_partitions
Definition: FilterParams.h:109
LArSamples::Data::gainStr
static TString gainStr(CaloGain::CaloGain gain)
Definition: Data.cxx:502
maskDeadModules.run1
run1
Definition: maskDeadModules.py:40
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
sel
sel
Definition: SUSYToolsTester.cxx:92
master.flag
bool flag
Definition: master.py:29
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
LArSamples::PartitionId
PartitionId
Definition: CaloId.h:29
run
Definition: run.py:1
selection
std::string selection
Definition: fbtTestBasics.cxx:73
LArSamples::FilterParams::setStatus
void setStatus(unsigned int status)
Definition: FilterParams.h:82
LArSamples::FilterParams::passHash
bool passHash(unsigned int hashId) const
Definition: FilterParams.cxx:412
LArSamples::FilterParams::addChannel
void addChannel(CaloId calo, int feedthrough, int slot, int channel)
Definition: FilterParams.cxx:373
LArSamples::UNKNOWN_CALO
@ UNKNOWN_CALO
Definition: CaloId.h:23
LArSamples::FilterParams::m_gains
std::vector< CaloGain::CaloGain > m_gains
Definition: FilterParams.h:112
create_dcsc_inputs_sqlite.arg
list arg
Definition: create_dcsc_inputs_sqlite.py:48
ReadCellNoiseFromCoolCompare.run2
run2
Definition: ReadCellNoiseFromCoolCompare.py:53
LArSamples::FilterParams::addHashIdRange
void addHashIdRange(unsigned int hashId1, unsigned int hashId2)
Definition: FilterParams.h:65
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArSamples::FilterParams::m_lbs
std::vector< UIntRange > m_lbs
Definition: FilterParams.h:107
LArSamples::CaloId
CaloId
Definition: CaloId.h:21
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArSamples::FilterParams::m_calos
std::vector< CaloId > m_calos
Definition: FilterParams.h:108
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition: CaloGain.h:18
LArSamples::EMEC_A
@ EMEC_A
Definition: CaloId.h:25
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
LArSamples::FilterParams::setRequireNoSaturation
void setRequireNoSaturation(bool flag=true)
Definition: FilterParams.h:86
DeMoScan.first
bool first
Definition: DeMoScan.py:534
LArSamples::FilterParams::m_hashIds
std::vector< UIntRange > m_hashIds
Definition: FilterParams.h:107
Herwig7_QED_EvtGen_ll.fs
dictionary fs
Definition: Herwig7_QED_EvtGen_ll.py:17
LArSamples::FilterParams::addPartition
void addPartition(PartitionId part)
Definition: FilterParams.h:81
LArSamples::FilterParams::m_requireSat
unsigned int m_requireSat
Definition: FilterParams.h:113
LArSamples::UIntRange
std::pair< int, int > UIntRange
Definition: FilterParams.h:23
LArSamples::FilterParams::addEvent
void addEvent(unsigned int event)
Definition: FilterParams.h:68
LArSamples::EMB_A
@ EMB_A
Definition: CaloId.h:24
merge.status
status
Definition: merge.py:17
veto
std::vector< std::string > veto
these patterns are anded
Definition: listroot.cxx:191
LArSamples::FilterParams::addLayer
void addLayer(unsigned int layer)
Definition: FilterParams.h:71
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
error
Definition: IImpactPoint3dEstimator.h:70
LArSamples::EMEC_C
@ EMEC_C
Definition: CaloId.h:25
LArSamples::FilterParams::addLB
void addLB(unsigned int lb)
Definition: FilterParams.h:69
LArSamples::FilterParams::m_status
unsigned int m_status
Definition: FilterParams.h:113
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356
fitman.k
k
Definition: fitman.py:528
LArSamples::FilterParams::setIndexParity
void setIndexParity(short parity)
Definition: FilterParams.h:87
pdg_comparison.conv
conv
Definition: pdg_comparison.py:321