ATLAS Offline Software
FilterParams.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 #include "LArSamplesMon/Data.h"
8 #include "LArCafJobs/CellInfo.h"
10 #include "LArCafJobs/Definitions.h"
11 
12 #include "TObjArray.h"
13 #include "TObjString.h"
14 
15 #include <fstream>
16 #include <iostream>
17 using std::cout;
18 using std::endl;
19 
20 using namespace LArSamples;
21 using namespace std;
22 
23 
24 bool ChannelSpec::match(const CellInfo& info) const
25 {
26  if (channel >= 0 && info.channel() != channel) return false;
27  if (feedThrough >= 0 && info.feedThrough() != feedThrough) return false;
28  if (slot >= 0 && info.slot() != slot) return false;
29  if (calo != UNKNOWN_CALO && !Id::matchCalo(info.calo(), calo)) return false;
30  return true;
31 }
32 
33 bool FuncCut::pass(const Data& data) const
34 {
35  double val = func.val(data, args);
36  if (gotMin() && gotMax() && min > max) return (val == min); // for ==
37  if (gotMin() && val < min) return false; // for > (Actually a >=)
38  if (gotMax() && val >= max) return false; // for <
39  return true;
40 }
41 
42 
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 { }
50 
51 
52 bool FilterParams::set(const char* selection)
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 }
110 
111 
112 bool FilterParams::splitToken(const TString& token, TString& var, TString& op, TString& arg)
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 }
161 
162 
163 TString FilterParams::processToken(const TString& var, const TString& op, const TString& arg, const TString& oring)
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 }
364 
365 
367 {
368  addRun(data.run());
369  addEvent(data.event());
370 }
371 
372 
373 void FilterParams::addChannel(CaloId calo, int feedThrough, int slot, int channel)
374 {
375  m_channels.emplace_back(calo, feedThrough, slot, channel);
376 }
377 
378 
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 }
401 
402 
403 bool FilterParams::pass(unsigned int hashId, const History& history, unsigned int k) const
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 }
410 
411 
412 bool FilterParams::passHash(unsigned int hashId) const
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 }
425 
426 
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 }
480 
481 
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 }
528 
grepfile.info
info
Definition: grepfile.py:38
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
LArSamples::FilterParams::addRunEventFromData
void addRunEventFromData(const Data &data)
Definition: FilterParams.cxx:366
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
checkFileSG.line
line
Definition: checkFileSG.py:75
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
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
max
#define max(a, b)
Definition: cfImp.cxx:41
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
LArSamples::FilterParams
Definition: FilterParams.h:50
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::ChannelSpec::match
bool match(const CellInfo &info) const
Definition: FilterParams.cxx:24
LArSamples::History
Definition: History.h:40
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
LArSamples
Definition: AbsShape.h:24
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
FilterParams.h
MonitorBase.h
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::addChannels
void addChannels(const char *fileName)
Definition: FilterParams.cxx:379
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
LArSamples::FilterParams::m_channelSel
int m_channelSel
Definition: FilterParams.h:120
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
sel
sel
Definition: SUSYToolsTester.cxx:92
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
Definitions.h
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
min
#define min(a, b)
Definition: cfImp.cxx:40
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
LArSamples::FilterParams::addHashIdRange
void addHashIdRange(unsigned int hashId1, unsigned int hashId2)
Definition: FilterParams.h:65
LArSamples::Data
Definition: Data.h:77
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArSamples::FilterParams::m_lbs
std::vector< UIntRange > m_lbs
Definition: FilterParams.h:107
LArSamples::CellInfo
Definition: CellInfo.h:31
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
LArSamples::FilterParams::set
bool set(const char *selection)
Definition: FilterParams.cxx:52
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
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::FilterParams::addEvent
void addEvent(unsigned int event)
Definition: FilterParams.h:68
Data.h
LArSamples::EMB_A
@ EMB_A
Definition: CaloId.h:24
merge.status
status
Definition: merge.py:17
History.h
LArSamples::FilterParams::addLayer
void addLayer(unsigned int layer)
Definition: FilterParams.h:71
LArSamples::FilterParams::FilterParams
FilterParams()
Definition: FilterParams.h:54
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
LArSamples::FuncCut::pass
bool pass(const Data &data) const
Definition: FilterParams.cxx:33
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
CellInfo.h
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