ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPulseLine.h
Go to the documentation of this file.
1 #ifndef AtPULSELINETASK_H
2 #define AtPULSELINETASK_H
3 
4 #include "AtPulse.h" // for AtPulse::ResponseFunc, AtPulse, AtPuls...
5 
6 #include <map>
7 #include <memory> // for make_shared, shared_ptr
8 #include <sys/types.h>
9 #include <vector>
10 
11 #include "Math/Vector3Dfwd.h"
12 
13 class AtSimulatedLine;
14 class AtSimulatedPoint;
15 
16 class AtPulseLine : public AtPulse {
17 
18 private:
19  uint fNumIntegrationPoints = 1000;
20  ushort fNumSigmaToIntegrateZ = 3;
21 
22  std::map<int, float> fXYintegrationMap;
23 
24 public:
25  AtPulseLine(AtMapPtr map, ResponseFunc response = nullptr);
26  AtPulseLine(const AtPulseLine &other) = default;
27 
28  void SetNumIntegrationPoints(uint numPoints) { fNumIntegrationPoints = numPoints; }
29  void SetNumSigmaToIntegrateZ(ushort zScore) { fNumSigmaToIntegrateZ = zScore; }
30  uint GetNumIntegrationPoints() { return fNumIntegrationPoints; }
31  ushort SetNumSigmaToIntegrateZ() { return fNumSigmaToIntegrateZ; }
32  virtual std::shared_ptr<AtPulse> Clone() const override { return std::make_shared<AtPulseLine>(*this); }
33 
34 protected:
36  int throwRandomAndGetPadAfterDiffusion(const ROOT::Math::XYZVector &loc, double diffusionSigma);
37 
38  // Returns the bin ID (binMin) that the zIntegral starts from
39  // fills zIntegral with the integral for bins starting with binMin, inclusive
40  int integrateTimebuckets(std::vector<double> &zIntegral, AtSimulatedLine *line);
41  virtual bool AssignElectronsToPad(AtSimulatedPoint *line) override;
42 };
43 #endif
AtPulseLine::SetNumIntegrationPoints
void SetNumIntegrationPoints(uint numPoints)
Definition: AtPulseLine.h:28
AtPulseLine::AtPulseLine
AtPulseLine(AtMapPtr map, ResponseFunc response=nullptr)
xyIntegrationMap[padNum] = % of e- in event here
Definition: AtPulseLine.cxx:29
XYZVector
ROOT::Math::XYZVector XYZVector
Definition: AtFindVertex.h:20
AtPulseLine::throwRandomAndGetPadAfterDiffusion
int throwRandomAndGetPadAfterDiffusion(const ROOT::Math::XYZVector &loc, double diffusionSigma)
Definition: AtPulseLine.cxx:34
AtPulseLine::AtPulseLine
AtPulseLine(const AtPulseLine &other)=default
AtSimulatedLine
Definition: AtSimulatedLine.h:17
AtPulse::ResponseFunc
std::function< double(int, double)> ResponseFunc
Function (or callable object) to use as the response function. Parameters are padNum and time (us)
Definition: AtPulse.h:27
AtPulseLine::integrateTimebuckets
int integrateTimebuckets(std::vector< double > &zIntegral, AtSimulatedLine *line)
Definition: AtPulseLine.cxx:96
AtSimulatedPoint
Definition: AtSimulatedPoint.h:16
AtPulseLine::SetNumSigmaToIntegrateZ
ushort SetNumSigmaToIntegrateZ()
Definition: AtPulseLine.h:31
AtPulseLine::AssignElectronsToPad
virtual bool AssignElectronsToPad(AtSimulatedPoint *line) override
Definition: AtPulseLine.cxx:66
AtPulseLine::SetNumSigmaToIntegrateZ
void SetNumSigmaToIntegrateZ(ushort zScore)
Definition: AtPulseLine.h:29
AtPulse::AtMapPtr
std::shared_ptr< AtMap > AtMapPtr
Definition: AtPulse.h:24
AtPulseLine
Definition: AtPulseLine.h:16
AtPulse
Definition: AtPulse.h:22
AtPulseLine::GetNumIntegrationPoints
uint GetNumIntegrationPoints()
Definition: AtPulseLine.h:30
AtPulseLine::generateIntegrationMap
void generateIntegrationMap(AtSimulatedLine &line)
Definition: AtPulseLine.cxx:44
AtPulseLine::Clone
virtual std::shared_ptr< AtPulse > Clone() const override
Definition: AtPulseLine.h:32
AtPulse.h