Belle II Software  release-05-02-19
CDCTriggerMLP.h
1 #ifndef CDCTRIGGERMLP_H
2 #define CDCTRIGGERMLP_H
3 
4 #include <TObject.h>
5 #include <framework/logging/Logger.h>
6 
7 namespace Belle2 {
13  class CDCTriggerMLP : public TObject {
14 
15  // weights etc. are set only by the trainer
16  friend class CDCTriggerNeuroTrainerModule;
17 
18  public:
20  CDCTriggerMLP();
21 
23  CDCTriggerMLP(std::vector<unsigned short>& nodes,
24  unsigned short targets,
25  std::vector<float>& outputscale,
26  std::vector<float>& phirange,
27  std::vector<float>& invptrange,
28  std::vector<float>& thetarange,
29  unsigned short maxHits,
30  unsigned long pattern,
31  unsigned long patternMask,
32  unsigned short tmax,
33  bool calcT0,
34  std::string etoption);
35 
38 
40  bool isTrained() const { return trained; }
42  unsigned nLayers() const { return nNodes.size(); }
44  unsigned nNodesLayer(unsigned iLayer) const { return nNodes[iLayer]; }
46  unsigned nWeights() const { return weights.size(); }
48  unsigned nWeightsCal() const;
50  std::vector<float> getWeights() const { return weights; }
52  unsigned short getMaxHitsPerSL() const { return maxHitsPerSL; }
54  unsigned long getSLpattern() const { return SLpattern & SLpatternMask; }
56  unsigned long getSLpatternMask() const { return SLpatternMask; }
58  unsigned long getSLpatternUnmasked() const { return SLpattern; }
60  unsigned short getTMax() const { return tMax; }
62  std::vector<float> getIDRange(unsigned iSL) const
63  {
64  return {relevantID[2 * iSL], relevantID[2 * iSL + 1]};
65  }
67  bool getT0fromHits() const
68  {
69  B2WARNING("Use of this flag is deprecated! Use get_et_option() instead!");
70  return T0fromHits;
71  }
73  std::string get_et_option() const { return et_option; }
74 
76  bool inPhiRange(float phi) const;
78  bool inPtRange(float pt) const;
80  bool inInvptRange(float invpt) const;
82  bool inThetaRange(float theta) const;
84  bool isRelevant(float relId, unsigned iSL) const;
85 
88  float scaleId(double relId, unsigned iSL) const;
90  std::vector<float> scaleTarget(std::vector<float> target) const;
92  std::vector<float> unscaleTarget(std::vector<float> target) const;
93 
95  int zIndex() const;
97  int thetaIndex() const;
98 
99  private:
101  std::vector<unsigned short> nNodes;
103  std::vector<float> weights;
106  bool trained;
107 
109  unsigned short targetVars;
112  std::vector<float> outputScale;
113 
116  std::vector<float> phiRange;
120  std::vector<float> invptRange;
122  std::vector<float> thetaRange;
123 
125  unsigned short maxHitsPerSL;
129  unsigned long SLpattern;
133  unsigned long SLpatternMask;
134 
136  unsigned short tMax;
140  std::vector<float> relevantID;
141 
156  std::string et_option;
157 
164 
167  };
169 }
170 #endif
Belle2::CDCTriggerMLP::getSLpatternMask
unsigned long getSLpatternMask() const
get bitmask for super layer pattern
Definition: CDCTriggerMLP.h:56
Belle2::CDCTriggerMLP::get_et_option
std::string get_et_option() const
Returns way of obtaining the event time.
Definition: CDCTriggerMLP.h:73
Belle2::CDCTriggerMLP::targetVars
unsigned short targetVars
output variables: 1: z, 2: theta, 3: (z, theta)
Definition: CDCTriggerMLP.h:109
Belle2::CDCTriggerMLP::invptRange
std::vector< float > invptRange
Charge / Pt region in 1/GeV for which this expert is trained.
Definition: CDCTriggerMLP.h:120
Belle2::CDCTriggerMLP::CDCTriggerMLP
CDCTriggerMLP()
default constructor.
Definition: CDCTriggerMLP.cc:6
Belle2::CDCTriggerMLP::nWeightsCal
unsigned nWeightsCal() const
calculate number of weights from number of nodes
Definition: CDCTriggerMLP.cc:57
Belle2::CDCTriggerMLP::relevantID
std::vector< float > relevantID
Hits must be within ID region around 2D track to be used as input.
Definition: CDCTriggerMLP.h:140
Belle2::CDCTriggerMLP::SLpattern
unsigned long SLpattern
Super layer pattern for which this expert is trained.
Definition: CDCTriggerMLP.h:129
Belle2::CDCTriggerMLP::~CDCTriggerMLP
~CDCTriggerMLP()
destructor, empty because we don't allocate memory anywhere.
Definition: CDCTriggerMLP.h:37
Belle2::CDCTriggerMLP::ClassDef
ClassDef(CDCTriggerMLP, 7)
Needed to make the ROOT object storable.
Belle2::CDCTriggerMLP::nWeights
unsigned nWeights() const
get number of weights from length of weights vector
Definition: CDCTriggerMLP.h:46
Belle2::CDCTriggerMLP::getTMax
unsigned short getTMax() const
get maximal drift time
Definition: CDCTriggerMLP.h:60
Belle2::CDCTriggerMLP::inThetaRange
bool inThetaRange(float theta) const
check whether given theta value is in sector
Definition: CDCTriggerMLP.cc:90
Belle2::CDCTriggerMLP::getSLpatternUnmasked
unsigned long getSLpatternUnmasked() const
get raw super layer pattern
Definition: CDCTriggerMLP.h:58
Belle2::CDCTriggerMLP::inPtRange
bool inPtRange(float pt) const
check whether given pt value is in sector
Definition: CDCTriggerMLP.cc:78
Belle2::CDCTriggerMLP::et_option
std::string et_option
Returns way of obtaining the event time.
Definition: CDCTriggerMLP.h:156
Belle2::CDCTriggerMLP::isTrained
bool isTrained() const
check if weights are default values or set by some trainer
Definition: CDCTriggerMLP.h:40
Belle2::CDCTriggerMLP::thetaIndex
int thetaIndex() const
get target index for theta (-1 if no output is trained for theta)
Definition: CDCTriggerMLP.cc:140
Belle2::CDCTriggerMLP::getIDRange
std::vector< float > getIDRange(unsigned iSL) const
get relevant ID range for given super layer
Definition: CDCTriggerMLP.h:62
Belle2::CDCTriggerMLP::unscaleTarget
std::vector< float > unscaleTarget(std::vector< float > target) const
scale target value from [-1, 1] to outputScale
Definition: CDCTriggerMLP.cc:123
Belle2::CDCTriggerMLP::phiRange
std::vector< float > phiRange
Phi region in radian for which this expert is trained.
Definition: CDCTriggerMLP.h:116
Belle2::CDCTriggerMLP::inPhiRange
bool inPhiRange(float phi) const
check whether given phi value is in sector
Definition: CDCTriggerMLP.cc:70
Belle2::CDCTriggerMLP::getMaxHitsPerSL
unsigned short getMaxHitsPerSL() const
get maximum hit number for a single super layer
Definition: CDCTriggerMLP.h:52
Belle2::CDCTriggerMLP::weights
std::vector< float > weights
Weights of the network.
Definition: CDCTriggerMLP.h:103
Belle2::CDCTriggerMLP::outputScale
std::vector< float > outputScale
Output[i] of the MLP is scaled from [-1, 1] to [outputScale[2i], outputScale[2i+1]].
Definition: CDCTriggerMLP.h:112
Belle2::CDCTriggerMLP::nNodes
std::vector< unsigned short > nNodes
Number of nodes in each layer, not including bias nodes.
Definition: CDCTriggerMLP.h:101
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::CDCTriggerMLP::nNodesLayer
unsigned nNodesLayer(unsigned iLayer) const
get number of nodes in a layer
Definition: CDCTriggerMLP.h:44
Belle2::CDCTriggerMLP::getWeights
std::vector< float > getWeights() const
get weights vector
Definition: CDCTriggerMLP.h:50
Belle2::CDCTriggerMLP::nLayers
unsigned nLayers() const
get number of layers
Definition: CDCTriggerMLP.h:42
Belle2::CDCTriggerMLP::trained
bool trained
Indicator whether the weights are just default values or have been set by some trainer (set to true w...
Definition: CDCTriggerMLP.h:106
Belle2::CDCTriggerMLP::tMax
unsigned short tMax
Maximal drift time (for scaling), hits with larger values are ignored.
Definition: CDCTriggerMLP.h:136
Belle2::CDCTriggerMLP::SLpatternMask
unsigned long SLpatternMask
Bitmask for comparing the super layer pattern.
Definition: CDCTriggerMLP.h:133
Belle2::CDCTriggerMLP::scaleId
float scaleId(double relId, unsigned iSL) const
scale relative TS ID from relevant range to approximately [-1, 1] (to facilitate the FPGA implementat...
Definition: CDCTriggerMLP.cc:102
Belle2::CDCTriggerMLP::getSLpattern
unsigned long getSLpattern() const
get super layer pattern
Definition: CDCTriggerMLP.h:54
Belle2::CDCTriggerMLP::isRelevant
bool isRelevant(float relId, unsigned iSL) const
check whether given relative TS ID is in relevant range
Definition: CDCTriggerMLP.cc:96
Belle2::CDCTriggerMLP::thetaRange
std::vector< float > thetaRange
Theta region in radian for which this expert is trained.
Definition: CDCTriggerMLP.h:122
Belle2::CDCTriggerMLP::getT0fromHits
bool getT0fromHits() const
get flag for event time definition
Definition: CDCTriggerMLP.h:67
Belle2::CDCTriggerMLP::zIndex
int zIndex() const
get target index for z (-1 if no output is trained for z)
Definition: CDCTriggerMLP.cc:134
Belle2::CDCTriggerMLP::maxHitsPerSL
unsigned short maxHitsPerSL
Maximum number of inputs for a single super layer.
Definition: CDCTriggerMLP.h:125
Belle2::CDCTriggerMLP::scaleTarget
std::vector< float > scaleTarget(std::vector< float > target) const
scale target value from outputScale to [-1, 1]
Definition: CDCTriggerMLP.cc:112
Belle2::CDCTriggerMLP
Class to keep all parameters of an expert MLP for the neuro trigger.
Definition: CDCTriggerMLP.h:13
Belle2::CDCTriggerMLP::T0fromHits
bool T0fromHits
DEPRECATED!! If true, the event time will be determined from hits within relevantID region,...
Definition: CDCTriggerMLP.h:163
Belle2::CDCTriggerNeuroTrainerModule
The trainer module for the neural networks of the CDC trigger.
Definition: CDCTriggerNeuroTrainerModule.h:24
Belle2::CDCTriggerMLP::inInvptRange
bool inInvptRange(float invpt) const
check whether given 1/pt value is in sector
Definition: CDCTriggerMLP.cc:84