![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <FilterParams.h>
|
| 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 bool | splitToken (const TString &token, TString &var, TString &op, TString &arg) |
|
Definition at line 50 of file FilterParams.h.
◆ FilterParams() [1/2]
LArSamples::FilterParams::FilterParams |
( |
| ) |
|
|
inline |
◆ FilterParams() [2/2]
◆ addCalo()
void LArSamples::FilterParams::addCalo |
( |
CaloId |
calo | ) |
|
|
inline |
◆ addChannel()
void FilterParams::addChannel |
( |
CaloId |
calo, |
|
|
int |
feedthrough, |
|
|
int |
slot, |
|
|
int |
channel |
|
) |
| |
◆ addChannels()
void FilterParams::addChannels |
( |
const char * |
fileName | ) |
|
Definition at line 379 of file FilterParams.cxx.
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;
◆ addEvent()
void LArSamples::FilterParams::addEvent |
( |
unsigned int |
event | ) |
|
|
inline |
◆ addEventRange()
void LArSamples::FilterParams::addEventRange |
( |
unsigned int |
event1, |
|
|
unsigned int |
event2 |
|
) |
| |
|
inline |
◆ addGain()
◆ addHashId()
void LArSamples::FilterParams::addHashId |
( |
unsigned int |
hashId | ) |
|
|
inline |
◆ addHashIdRange()
void LArSamples::FilterParams::addHashIdRange |
( |
unsigned int |
hashId1, |
|
|
unsigned int |
hashId2 |
|
) |
| |
|
inline |
◆ addLayer()
void LArSamples::FilterParams::addLayer |
( |
unsigned int |
layer | ) |
|
|
inline |
◆ addLB()
void LArSamples::FilterParams::addLB |
( |
unsigned int |
lb | ) |
|
|
inline |
◆ addLBRange()
void LArSamples::FilterParams::addLBRange |
( |
unsigned int |
lb1, |
|
|
unsigned int |
lb2 |
|
) |
| |
|
inline |
◆ addPartition()
void LArSamples::FilterParams::addPartition |
( |
PartitionId |
part | ) |
|
|
inline |
◆ addRun()
void LArSamples::FilterParams::addRun |
( |
unsigned int |
run | ) |
|
|
inline |
◆ addRunEventFromData()
void FilterParams::addRunEventFromData |
( |
const Data & |
data | ) |
|
◆ addRunRange()
void LArSamples::FilterParams::addRunRange |
( |
unsigned int |
run1, |
|
|
unsigned int |
run2 |
|
) |
| |
|
inline |
◆ pass()
bool FilterParams::pass |
( |
unsigned int |
hashId, |
|
|
const History & |
history, |
|
|
unsigned int |
k |
|
) |
| const |
◆ passCell()
◆ passEvent()
bool FilterParams::passEvent |
( |
const Data & |
data | ) |
const |
Definition at line 427 of file FilterParams.cxx.
430 if (!
p.second.pass(
data))
return false;
440 for (
unsigned int k = 0;
k <
m_runs.size();
k++)
445 if (!
pass)
return false;
455 if (!
pass)
return false;
458 if (!
m_lbs.empty()) {
460 for (
unsigned int k = 0;
k <
m_lbs.size();
k++)
465 if (!
pass)
return false;
470 for (
unsigned int k = 0;
k <
m_gains.size();
k++)
475 if (!
pass)
return false;
◆ passHash()
bool FilterParams::passHash |
( |
unsigned int |
hashId | ) |
const |
◆ processToken()
TString FilterParams::processToken |
( |
const TString & |
var, |
|
|
const TString & |
op, |
|
|
const TString & |
arg, |
|
|
const TString & |
oring = "" |
|
) |
| |
Definition at line 163 of file FilterParams.cxx.
166 if (
var ==
"status" && op ==
"==") {
167 if (
m_status != 0xffffffff)
return "Variable " +
var +
" already set";
171 if (
var ==
"saturate" && op ==
"==") {
175 return "Invalid argument " +
arg;
178 if (oring !=
"cell" && !
m_channels.empty())
return "Variable " +
var +
" already set";
180 if (
m_channelSel == -1)
return "Cannot have positive channel selections and vetos in the same command";
181 cout <<
"---> set channel sel == 1" << endl;
185 if (
m_channelSel == +1)
return "Cannot have positive channel selections and vetos in the same command";
186 cout <<
"---> set channel sel == -1" << endl;
189 TObjArray* chTokens =
nullptr;
190 if (TString(
arg[0]) ==
"[" || TString(
arg[
arg.Length() - 1]) ==
"]")
191 chTokens = TString(
arg(1,
arg.Length() - 2)).Tokenize(
",");
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();
202 int ftNum = -99, slotNum = -99, channelNum = -99;
205 else if (
ft ==
"?" ||
ft ==
"x" ||
ft ==
"-1")
207 if (ftNum == -99)
return "Invalid FT argument " +
ft;
209 slotNum = slot.Atoi();
210 else if (slot ==
"?" || slot ==
"x" || slot ==
"-1")
212 if (slotNum == -99)
return "Invalid slot argument " + slot;
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;
222 if (
var ==
"calo" && op ==
"==") {
223 if (oring !=
"calo" && !
m_calos.empty())
return "Variable " +
var +
" already set";
227 cout <<
"---> addCalo " <<
Id::str(caloId) << endl;
230 if (
var ==
"partition" && op ==
"==") {
231 if (oring !=
"partition" && !
m_calos.empty())
return "Variable " +
var +
" already set";
235 cout <<
"---> addPartition " <<
Id::str(partId) << endl;
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;
242 cout <<
"---> addLayer " <<
arg.Atoi() << endl;
245 if (
var ==
"gain" && op ==
"==") {
246 if (oring !=
"gain" && !
m_gains.empty())
return "Variable " +
var +
" already set";
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;
260 cout <<
"---> addRun " <<
arg.Atoi() << endl;
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;
267 cout <<
"---> addEvent " <<
arg.Atoi() << endl;
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();
277 if (!
run.IsDigit())
return "Invalid run argument in " +
arg;
278 if (!
evt.IsDigit())
return "Invalid event argument in " +
arg;
281 cout <<
"---> addRun/addEvent " <<
run.Atoi() <<
"/" <<
evt.Atoi() << endl;
284 if (
var ==
"eventFile" && op ==
"==") {
285 if (oring !=
"eventFile" && !
m_events.empty())
return "Variable " +
var +
" already set";
287 if (!
fs.is_open() ||
fs.eof())
return "File " +
arg +
" does not contain a valid event list";
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();
297 if (!
run.IsDigit())
return "Invalid run argument in " +
arg;
298 if (!
evt.IsDigit())
return "Invalid event argument in " +
arg;
301 cout <<
"---> addRun/addEvent " <<
run.Atoi() <<
"/" <<
evt.Atoi() << endl;
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;
309 cout <<
"---> addLB " <<
arg.Atoi() << endl;
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;
316 cout <<
"---> addHashId " <<
arg.Atoi() << endl;
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;
323 cout <<
"---> addHashIdRange 0 " <<
arg.Atoi() << endl;
326 if (
var ==
"indexParity" && op ==
"==") {
327 if (oring !=
"")
return "Variable " +
var +
" cannot be or'ed";
328 if (!
arg.IsDigit())
return "Invalid argument " +
arg;
330 cout <<
"---> indexParity " <<
arg.Atoi() << endl;
334 std::vector<TString> vars;
335 std::vector<DataFuncSet> funcs;
336 std::vector<DataFuncArgs>
args;
338 if (
status && vars.size() == 1) {
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;
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;
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;
362 return "Invalid variable or operator";
◆ set()
bool FilterParams::set |
( |
const char * |
selection | ) |
|
Definition at line 52 of file FilterParams.cxx.
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.";
61 sel.ReplaceAll(
" ",
"");
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(
"||");
68 for (
int j = 0; j < orTokens->GetEntries(); j++) {
69 TString& orToken = ((TObjString*)orTokens->At(j))->String();
71 cout <<
"could not process token " << orToken << endl <<
error << endl;
76 if (oring !=
"" && oring !=
var) {
77 cout <<
"inconsistent or-list " << token << endl <<
error << endl;
84 cout <<
"Error while processing token " << orToken <<
" : " <<
result << endl <<
error << endl;
96 cout <<
"could not process token " << token << endl <<
error << endl;
102 cout <<
"Error while processing token " << token <<
" : " <<
result << endl <<
error << endl;
◆ setChannelVeto()
void LArSamples::FilterParams::setChannelVeto |
( |
short |
veto = -1 | ) |
|
|
inline |
◆ setIndexParity()
void LArSamples::FilterParams::setIndexParity |
( |
short |
parity | ) |
|
|
inline |
◆ setRequireConvergence()
void LArSamples::FilterParams::setRequireConvergence |
( |
bool |
conv = true | ) |
|
|
inline |
◆ setRequireNoSaturation()
void LArSamples::FilterParams::setRequireNoSaturation |
( |
bool |
flag = true | ) |
|
|
inline |
◆ setRequireSaturation()
void LArSamples::FilterParams::setRequireSaturation |
( |
bool |
flag = true | ) |
|
|
inline |
◆ setStatus()
void LArSamples::FilterParams::setStatus |
( |
unsigned int |
status | ) |
|
|
inline |
◆ splitToken()
bool FilterParams::splitToken |
( |
const TString & |
token, |
|
|
TString & |
var, |
|
|
TString & |
op, |
|
|
TString & |
arg |
|
) |
| |
|
static |
Definition at line 112 of file FilterParams.cxx.
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();
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();
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();
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();
◆ m_calos
std::vector<CaloId> LArSamples::FilterParams::m_calos |
|
private |
◆ m_channels
std::vector<ChannelSpec> LArSamples::FilterParams::m_channels |
|
private |
◆ m_channelSel
int LArSamples::FilterParams::m_channelSel |
|
private |
◆ m_cuts
std::map<TString, FuncCut> LArSamples::FilterParams::m_cuts |
|
private |
◆ m_events
std::vector<UIntRange> LArSamples::FilterParams::m_events |
|
private |
◆ m_gains
◆ m_hashIds
std::vector<UIntRange> LArSamples::FilterParams::m_hashIds |
|
private |
◆ m_indexParity
short LArSamples::FilterParams::m_indexParity |
|
private |
◆ m_layers
std::vector<int> LArSamples::FilterParams::m_layers |
|
private |
◆ m_lbs
std::vector<UIntRange> LArSamples::FilterParams::m_lbs |
|
private |
◆ m_partitions
std::vector<PartitionId> LArSamples::FilterParams::m_partitions |
|
private |
◆ m_requireConvergence
bool LArSamples::FilterParams::m_requireConvergence |
|
private |
◆ m_requireSat
unsigned int LArSamples::FilterParams::m_requireSat |
|
private |
◆ m_runs
std::vector<UIntRange> LArSamples::FilterParams::m_runs |
|
private |
◆ m_saturation
const short LArSamples::FilterParams::m_saturation = 3800 |
|
static |
◆ m_status
unsigned int LArSamples::FilterParams::m_status |
|
private |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
bool passCell(const CellInfo &info) const
void addRun(unsigned int run)
bool passEvent(const Data &data) const
char data[hepevt_bytes_allocation_ATLAS]
std::map< TString, FuncCut > m_cuts
static bool matchCalo(CaloId id, CaloId idSpec)
std::vector< int > m_layers
const CellInfo * cellInfo() const
TString processToken(const TString &var, const TString &op, const TString &arg, const TString &oring="")
void setRequireSaturation(bool flag=true)
static TString str(CaloId id)
std::vector< UIntRange > m_events
std::vector< UIntRange > m_runs
void addGain(CaloGain::CaloGain gain)
static PartitionId partitionId(const TString &str)
std::vector< ChannelSpec > m_channels
static CaloId caloId(const TString &str)
bool pass(unsigned int hashId, const History &history, unsigned int k) const
static bool splitToken(const TString &token, TString &var, TString &op, TString &arg)
const Data * data(unsigned int i) const
bool m_requireConvergence
static const short m_saturation
static bool parseVariables(TString varStr, std::vector< TString > &vars, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args)
void addCalo(CaloId calo)
POOL::TEvent event(POOL::TEvent::kClassAccess)
void addHashId(unsigned int hashId)
std::vector< PartitionId > m_partitions
static TString gainStr(CaloGain::CaloGain gain)
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
void setStatus(unsigned int status)
bool passHash(unsigned int hashId) const
void addChannel(CaloId calo, int feedthrough, int slot, int channel)
std::vector< CaloGain::CaloGain > m_gains
void addHashIdRange(unsigned int hashId1, unsigned int hashId2)
std::vector< UIntRange > m_lbs
std::vector< CaloId > m_calos
void setRequireNoSaturation(bool flag=true)
std::vector< UIntRange > m_hashIds
void addPartition(PartitionId part)
unsigned int m_requireSat
std::pair< int, int > UIntRange
void addEvent(unsigned int event)
std::vector< std::string > veto
these patterns are anded
void addLayer(unsigned int layer)
void addLB(unsigned int lb)
bool match(std::string s1, std::string s2)
match the individual directories of two strings
void setIndexParity(short parity)