Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DSourceComboTimeHandler.h
Go to the documentation of this file.
1 #ifndef DSourceComboTimeHandler_h
2 #define DSourceComboTimeHandler_h
3 
4 #include <unordered_map>
5 #include <vector>
6 #include <map>
7 #include <memory>
8 
9 #include "TF1.h"
10 #include "TH2I.h"
11 #include "TROOT.h"
12 #include "TFile.h"
13 #include "TDirectoryFile.h"
14 
15 #include "particleType.h"
16 #include "DLorentzVector.h"
17 #include "PID/DKinematicData.h"
18 #include "PID/DNeutralShower.h"
20 #include "PID/DEventRFBunch.h"
21 #include "PID/DDetectorMatches.h"
22 #include "ANALYSIS/DSourceCombo.h"
25 
26 using namespace std;
27 using namespace jana;
28 
29 namespace DAnalysis
30 {
31 
32 using DPhotonKinematicsByZBin = unordered_map<signed char, unordered_map<const DNeutralShower*, shared_ptr<const DKinematicData>>>; //char: z-bin
33 using DPhotonShowersByBeamBunch = map<vector<int>, vector<const JObject*>>; //int: beam bunch n-shifts from nominal
34 class DSourceComboer;
36 
38 {
39  public:
40  DSourceComboTimeHandler(void) = delete;
41  DSourceComboTimeHandler(JEventLoop* locEventLoop, DSourceComboer* locSourceComboer, const DSourceComboVertexer* locSourceComboVertexer);
42  ~DSourceComboTimeHandler(void){Fill_Histograms();}
43 
44  //SETUP
45  void Reset(void);
46  void Set_DebugLevel(int locDebugLevel){dDebugLevel = locDebugLevel;}
47  void Setup(const vector<const DNeutralShower*>& locNeutralShowers, const DEventRFBunch* locInitialEventRFBunch, const DDetectorMatches* locDetectorMatches);
48  void Set_BeamParticles(const vector<const DBeamPhoton*>& locBeamParticles);
49 
50  //GET SETUP RESULTS
51  const DEventRFBunch* Get_InitialEventRFBunch(void) const{return dInitialEventRFBunch;}
52  DPhotonKinematicsByZBin Get_PhotonKinematics(void) const{return dPhotonKinematics;}
53  unordered_map<signed char, DPhotonShowersByBeamBunch> Get_ShowersByBeamBunchByZBin(void) const{return dShowersByBeamBunchByZBin;}
54  vector<const DKinematicData*> Get_BeamParticlesByRFBunch(int locRFBunch, unsigned int locPlusMinusBunchRange) const;
55 
56  //GET CUTS
57  map<DetectorSystem_t, TF1*> Get_TimeCuts(Particle_t locPID) const;
58  bool Get_TimeCut(Particle_t locPID, DetectorSystem_t locSystem, TF1* locTimeCut_ns) const;
59 
60  //GET VALID/COMMON RF BUNCHES
61  //Note that combining with an empty vector does NOT remove all bunches!!
62  //It is assumed that an empty vector means "unknown," and that you just want to use the other set instead
63  vector<int> Get_ValidRFBunches(const JObject* locObject, signed char locVertexZBin) const;
64  vector<int> Get_CommonRFBunches(const vector<int>& locRFBunches1, const JObject* locObject, signed char locVertexZBin) const;
65  vector<int> Get_CommonRFBunches(const vector<int>& locRFBunches1, const vector<int>& locRFBunches2) const;
66 
67  //UTILITY FUNCTIONS
68  int Calc_RFBunchShift(double locTimeToStepTo) const{return Calc_RFBunchShift(dInitialEventRFBunch->dTime, locTimeToStepTo);}
69  int Calc_RFBunchShift(double locTimeToStep, double locTimeToStepTo) const;
70  double Calc_RFTime(int locNumRFBunchShifts) const;
71  double Calc_PropagatedRFTime(double locPrimaryVertexZ, int locNumRFBunchShifts, double locDetachedVertexTimeOffset) const;
72  double Get_BeamBunchPeriod(void) const{return dBeamBunchPeriod;}
73 
74  //SELECT RF BUNCHES
75  bool Select_RFBunches_Charged(const DReactionVertexInfo* locReactionVertexInfo, const DSourceCombo* locChargedCombo, vector<int>& locValidRFBunches);
76  bool Select_RFBunches_PhotonVertices(const DReactionVertexInfo* locReactionVertexInfo, const DSourceCombo* locReactionFullCombo, vector<int>& locValidRFBunches);
77  bool Select_RFBunches_AllVerticesUnknown(const DReactionVertexInfo* locReactionVertexInfo, const DSourceCombo* locReactionFullCombo, Charge_t locCharge, vector<int>& locValidRFBunches);
78  int Select_RFBunch_Full(const DReactionVertexInfo* locReactionVertexInfo, const DSourceCombo* locReactionFullCombo, const vector<int>& locRFBunches);
79  bool Cut_Timing_MissingMassVertices(const DReactionVertexInfo* locReactionVertexInfo, const DSourceCombo* locReactionFullCombo, const DKinematicData* locBeamParticle, int locRFBunch);
80 
81  //GET POCA TO VERTEX
82  DLorentzVector Get_ChargedPOCAToVertexX4(const DChargedTrackHypothesis* locHypothesis, bool locIsProductionVertex, const DSourceCombo* locReactionFullCombo, const DSourceCombo* locVertexPrimaryCombo, const DKinematicData* locBeamPhoton, bool locIsCombo2ndVertex, DVector3 locVertex);
83 
84  //VERTEX-Z BINNING UTILITY FUNCTIONS
85  size_t Get_NumVertexZBins(void) const{return dNumPhotonVertexZBins;}
86  signed char Get_PhotonVertexZBin(double locVertexZ) const;
87  double Get_PhotonVertexZBinCenter(signed char locVertexZBin) const;
88  size_t Get_VertexZBin_TargetCenter(void) const{return Get_PhotonVertexZBin(dTargetCenter.Z());}
89 
90  void Vote_OldMethod(const DSourceCombo* locReactionFullCombo, vector<int>& locValidRFBunches);
91 
92  private:
93 
94  pair<DVector3, double> Calc_Photon_Kinematics(const DNeutralShower* locNeutralShower, const DVector3& locVertex) const;
95  shared_ptr<const DKinematicData> Create_KinematicData_Photon(const DNeutralShower* locNeutralShower, const DVector3& locVertex) const;
96 
97  void Calc_PhotonBeamBunchShifts(const DNeutralShower* locNeutralShower, shared_ptr<const DKinematicData>& locKinematicData, double locRFTime, signed char locZBin);
98  vector<int> Calc_BeamBunchShifts(double locVertexTime, double locOrigRFBunchPropagatedTime, double locDeltaTCut, bool locIncludeDecayTimeOffset, Particle_t locPID, DetectorSystem_t locSystem, double locP);
99 
100  double Calc_MaxDeltaTError(const DNeutralShower* locNeutralShower, double locTheta) const{return Calc_MaxDeltaTError(locNeutralShower, locTheta, dPhotonVertexZBinWidth/2.0);}
101  double Calc_MaxDeltaTError(const DNeutralShower* locNeutralShower, double locTheta, double locZError) const;
102 
103  bool Get_RFBunches_ChargedTrack(const DChargedTrackHypothesis* locHypothesis, bool locIsProductionVertex, const DSourceCombo* locVertexPrimaryCombo, bool locIsCombo2ndVertex, DVector3 locVertex, double locPropagatedRFTime, bool locOnlyTrackFlag, bool locDetachedVertex, vector<int>& locRFBunches);
104  TF1* Get_TimeCutFunction(Particle_t locPID, DetectorSystem_t locSystem) const;
105 
106  bool Compute_RFChiSqs_UnknownVertices(const DSourceCombo* locReactionFullCombo, Charge_t locCharge, const vector<int>& locRFBunches, unordered_map<int, double>& locChiSqByRFBunch, map<int, map<Particle_t, map<DetectorSystem_t, vector<pair<float, float>>>>>& locRFDeltaTsForHisting);
107  bool Cut_PhotonPID(const DNeutralShower* locNeutralShower, const DVector3& locVertex, double locPropagatedRFTime, bool locTargetCenterFlag, bool locDetachedVertex);
108  bool Cut_TrackPID(const DChargedTrackHypothesis* locHypothesis, bool locIsProductionVertex, const DSourceCombo* locFullReactionCombo, const DSourceCombo* locVertexPrimaryCombo, const DKinematicData* locBeamPhoton, bool locIsCombo2ndVertex, DVector3 locVertex, double locPropagatedRFTime, bool locDetachedVertex);
109 
110  pair<double, double> Calc_RFDeltaTChiSq(const DNeutralShower* locNeutralShower, const TVector3& locVertex, double locPropagatedRFTime) const;
111  pair<double, double> Calc_RFDeltaTChiSq(const DChargedTrackHypothesis* locHypothesis, double locVertexTime, double locPropagatedRFTime) const;
112 
113  void Define_DefaultCuts(void);
114  void Get_CommandLineCuts(void);
115  void Create_CutFunctions(void);
116  void Fill_Histograms(void);
117 
118 
119  //HANDLERS AND UTILITIES
123  int dDebugLevel = 0;
124  bool dPrintCutFlag = false;
125 
126  //EXPERIMENT INFORMATION
128  double dTargetLength = 30.0;
129  double dBeamBunchPeriod = 1000.0/249.5;
130  bool dUseSigmaForRFSelectionFlag = false;
131 
132  //VERTEX-DEPENDENT PHOTON INFORMATION
133  //For every 10cm in vertex-z, calculate the photon p4 & time for placing mass & delta-t cuts
134  //The z-range extends from the upstream end of the target - 5cm to the downstream end + 25cm
135  //so for a 30-cm-long target, it's a range of 50cm: 5bins, evaluated at the center of each bin
136  //Make sure that the center of the target is the center of a zbin!!!
137  float dPhotonVertexZBinWidth = 10.0;
138  float dPhotonVertexZRangeLow = 45.0;
139  size_t dNumPhotonVertexZBins = 6;
140  //due to detached vertices
141  double dMaxDecayTimeOffset = 0.0; //changed in constructor if needed
142  double dDetachedPathLengthUncertainty = 10.0; //guess
143  double dChargedDecayProductTimeUncertainty = 2.0; //due to uncertain path length
144 
145  //SHOWERS SORTED BY RF BUNCH
146  const DEventRFBunch* dInitialEventRFBunch = nullptr;
147  const DDetectorMatches* dDetectorMatches = nullptr;
148 
149  //zbins: showers are stored based on what zbins they are VALID for
150  //that means that the FCAL showers will appear in EVERY zbin: duplicate entries
151  //even though this takes less memory, it's faster than merging vectors each time they are requested
152  //Note that the RF-shift vectors are sorted
154  //shower -> RFs
155  unordered_map<signed char, unordered_map<const JObject*, vector<int>>> dShowerRFBunches; //char: z-bin
156  //RF -> showers
157  unordered_map<signed char, DPhotonShowersByBeamBunch> dShowersByBeamBunchByZBin; //char: zbin
158 
159  map<pair<const DKinematicData*, vector<const DKinematicData*>>, DLorentzVector> dChargedParticlePOCAToVertexX4; //pair: charged hypo, then vertex particles
160 
161  unordered_map<const DSourceCombo*, pair<bool, vector<int>>> dChargedComboRFBunches; //bool: passed/failed cuts (can pass with empty vector if no timing info) //combo: charged
162  unordered_map<const DSourceCombo*, pair<bool, vector<int>>> dPhotonVertexRFBunches; //bool: passed/failed cuts (can pass with empty vector if no timing info) //combo: full
163  unordered_map<const DSourceCombo*, pair<bool, vector<int>>> dUnknownVertexRFBunches; //bool: passed/failed cuts (can pass with empty vector if no timing info) //combo: full
164  unordered_map<const DSourceCombo*, int> dFullComboRFBunches; //combo: full
165 
166  unordered_map<int, vector<const DKinematicData*>> dBeamParticlesByRFBunch;
167 
168  //CUTS
169  //Unknown: initial RF selection for photons (at beginning of event, prior to vertex) //can be separate cut function
170  map<Particle_t, map<DetectorSystem_t, TF1*>> dPIDTimingCuts; //function of p
171  map<Particle_t, map<DetectorSystem_t, string>> dPIDTimingCuts_TF1FunctionString;
172  string dDefaultTimeCutFunctionString; //used if not found in dPIDTimingCuts_TF1FunctionString
173  map<Particle_t, map<DetectorSystem_t, vector<double>>> dPIDTimingCuts_TF1Params;
174 
175  //HISTOGRAMS
176  //Unknown: initial RF selection for photons (at beginning of event, prior to vertex) //can be separate cut function
178  map<Particle_t, map<DetectorSystem_t, TH2*>> dHistMap_RFDeltaTVsP_BestRF; //PID Unknown: photons prior to vertex selection
179  map<Particle_t, map<DetectorSystem_t, TH2*>> dHistMap_RFDeltaTVsP_AllRFs; //PID Unknown: photons prior to vertex selection
180  vector<pair<float, float>> dBeamRFDeltaTs;
181  map<Particle_t, map<DetectorSystem_t, vector<pair<float, float>>>> dSelectedRFDeltaTs; //first float is p, 2nd is delta-t //PID Unknown: photons prior to vertex selection
182  map<Particle_t, map<DetectorSystem_t, vector<pair<float, float>>>> dAllRFDeltaTs; //first float is p, 2nd is delta-t //PID Unknown: photons prior to vertex selection
183 };
184 
185 inline void DSourceComboTimeHandler::Reset(void)
186 {
187  Fill_Histograms();
188 
189  dInitialEventRFBunch = nullptr;
190 
191  dPhotonKinematics.clear(); //can probably delete instead of shared_ptr!!
192  for(auto& locZPair : dShowerRFBunches)
193  locZPair.second.clear();
194  for(auto& locZPair : dShowersByBeamBunchByZBin)
195  locZPair.second.clear();
196  dChargedParticlePOCAToVertexX4.clear();
197  dBeamParticlesByRFBunch.clear();
198 
199  dChargedComboRFBunches.clear();
200  dPhotonVertexRFBunches.clear();
201  dUnknownVertexRFBunches.clear();
202  dFullComboRFBunches.clear();
203 }
204 
205 inline signed char DSourceComboTimeHandler::Get_PhotonVertexZBin(double locVertexZ) const
206 {
207  //given some vertex-z, what bin am I in?
208  if(locVertexZ < dPhotonVertexZRangeLow)
209  return DSourceComboInfo::Get_VertexZIndex_OutOfRange();
210  int locPhotonVertexZBin = int((locVertexZ - dPhotonVertexZRangeLow)/dPhotonVertexZBinWidth);
211  return ((locPhotonVertexZBin >= int(dNumPhotonVertexZBins)) ? DSourceComboInfo::Get_VertexZIndex_OutOfRange() : locPhotonVertexZBin);
212 }
213 
214 inline double DSourceComboTimeHandler::Get_PhotonVertexZBinCenter(signed char locVertexZBin) const
215 {
216  return dPhotonVertexZRangeLow + (double(locVertexZBin) + 0.5)*dPhotonVertexZBinWidth;
217 }
218 
219 inline void DSourceComboTimeHandler::Set_BeamParticles(const vector<const DBeamPhoton*>& locBeamParticles)
220 {
221  for(const auto& locBeamParticle : locBeamParticles)
222  {
223  auto locRFBunch = Calc_RFBunchShift(dInitialEventRFBunch->dTime, locBeamParticle->time());
224  dBeamParticlesByRFBunch[locRFBunch].push_back(locBeamParticle);
225  dBeamRFDeltaTs.emplace_back(locBeamParticle->energy(), locBeamParticle->time() - dInitialEventRFBunch->dTime);
226  }
227 }
228 
229 inline map<DetectorSystem_t, TF1*> DSourceComboTimeHandler::Get_TimeCuts(Particle_t locPID) const
230 {
231  auto locIterator = dPIDTimingCuts.find(locPID);
232  if(locIterator == dPIDTimingCuts.end())
233  return {};
234  return locIterator->second;
235 }
236 
237 inline bool DSourceComboTimeHandler::Get_TimeCut(Particle_t locPID, DetectorSystem_t locSystem, TF1* locTimeCut_ns) const
238 {
239  auto locIterator = dPIDTimingCuts.find(locPID);
240  if(locIterator == dPIDTimingCuts.end())
241  return false;
242 
243  auto locSystemMap = locIterator->second;
244  auto locSystemIterator = locSystemMap.find(locSystem);
245  if(locSystemIterator == locSystemMap.end())
246  return false;
247 
248  locTimeCut_ns = locSystemIterator->second;
249  return true;
250 }
251 
252 inline vector<const DKinematicData*> DSourceComboTimeHandler::Get_BeamParticlesByRFBunch(int locCenterRFBunch, unsigned int locPlusMinusBunchRange) const
253 {
254  vector<const DKinematicData*> locBeamParticles;
255  for(auto locRFBunch = locCenterRFBunch - int(locPlusMinusBunchRange); locRFBunch <= locCenterRFBunch + int(locPlusMinusBunchRange); ++locRFBunch)
256  {
257  auto locIterator = dBeamParticlesByRFBunch.find(locRFBunch);
258  if(locIterator != dBeamParticlesByRFBunch.end())
259  locBeamParticles.insert(locBeamParticles.end(), locIterator->second.begin(), locIterator->second.end());
260  }
261  return locBeamParticles;
262 }
263 
264 inline double DSourceComboTimeHandler::Calc_RFTime(int locNumRFBunchShifts) const
265 {
266  return dInitialEventRFBunch->dTime + locNumRFBunchShifts*dBeamBunchPeriod;
267 }
268 
269 inline double DSourceComboTimeHandler::Calc_PropagatedRFTime(double locPrimaryVertexZ, int locNumRFBunchShifts, double locDetachedVertexTimeOffset) const
270 {
271  //propagate rf time to vertex and add time offset (faster to just do it here rather than for each particle)
272  return Calc_RFTime(locNumRFBunchShifts) + (locPrimaryVertexZ - dTargetCenter.Z())/SPEED_OF_LIGHT + locDetachedVertexTimeOffset;
273 }
274 
275 inline shared_ptr<const DKinematicData> DSourceComboTimeHandler::Create_KinematicData_Photon(const DNeutralShower* locNeutralShower, const DVector3& locVertex) const
276 {
277  auto locKinematicsPair = Calc_Photon_Kinematics(locNeutralShower, locVertex);
278  return std::make_shared<const DKinematicData>(Gamma, locKinematicsPair.first, locVertex, locKinematicsPair.second);
279 }
280 
281 inline pair<DVector3, double> DSourceComboTimeHandler::Calc_Photon_Kinematics(const DNeutralShower* locNeutralShower, const DVector3& locVertex) const
282 {
283  //returns momentum, vertex time
284  auto locPath = locNeutralShower->dSpacetimeVertex.Vect() - locVertex;
285  auto locPathLength = locPath.Mag();
286  auto locVertexTime = locNeutralShower->dSpacetimeVertex.T() - locPathLength/29.9792458;
287  auto locMomentum = locNeutralShower->dEnergy*locPath.Unit();
288  return std::make_pair(locMomentum, locVertexTime);
289 }
290 
291 inline vector<int> DSourceComboTimeHandler::Get_ValidRFBunches(const JObject* locObject, signed char locVertexZBin) const
292 {
293  const auto& locBunchesByObject = dShowerRFBunches.find(locVertexZBin)->second;
294  auto locIterator = locBunchesByObject.find(locObject);
295  if(locIterator == locBunchesByObject.end())
296  return {};
297  return locIterator->second;
298 }
299 
300 inline int DSourceComboTimeHandler::Calc_RFBunchShift(double locTimeToStep, double locTimeToStepTo) const
301 {
302  double locDeltaT = locTimeToStepTo - locTimeToStep;
303  return (locDeltaT > 0.0) ? int(locDeltaT/dBeamBunchPeriod + 0.5) : int(locDeltaT/dBeamBunchPeriod - 0.5);
304 }
305 
306 inline vector<int> DSourceComboTimeHandler::Get_CommonRFBunches(const vector<int>& locRFBunches1, const JObject* locObject, signed char locVertexZBin) const
307 {
308  return Get_CommonRFBunches(locRFBunches1, Get_ValidRFBunches(locObject, locVertexZBin));
309 }
310 
311 inline vector<int> DSourceComboTimeHandler::Get_CommonRFBunches(const vector<int>& locRFBunches1, const vector<int>& locRFBunches2) const
312 {
313  //check to see if one of the input vectors is empty //empty means "no idea": all possible bunches are valid
314  if(locRFBunches1.empty())
315  return locRFBunches2;
316  else if(locRFBunches2.empty())
317  return locRFBunches1;
318 
319  vector<int> locCommonRFBunches = {}; //if charged or massive neutrals, ignore (they don't choose at this stage)
320  locCommonRFBunches.reserve(locRFBunches1.size() + locRFBunches2.size());
321  std::set_intersection(locRFBunches1.begin(), locRFBunches1.end(), locRFBunches2.begin(), locRFBunches2.end(), std::back_inserter(locCommonRFBunches));
322  return locCommonRFBunches;
323 }
324 
325 inline pair<double, double> DSourceComboTimeHandler::Calc_RFDeltaTChiSq(const DNeutralShower* locNeutralShower, const TVector3& locVertex, double locPropagatedRFTime) const
326 {
327  //calc vertex time, get delta-t cut
328  auto locPathLength = (locNeutralShower->dSpacetimeVertex.Vect() - locVertex).Mag();
329  auto locVertexTime = locNeutralShower->dSpacetimeVertex.T() - locPathLength/29.9792458;
330  auto locVertexTimeVariance = dUseSigmaForRFSelectionFlag ? (*(locNeutralShower->dCovarianceMatrix))(4, 4) : 1.0;
331 
332  auto locDeltaT = locVertexTime - locPropagatedRFTime;
333  auto locChiSq = locDeltaT*locDeltaT/locVertexTimeVariance;
334  if(dDebugLevel >= 5)
335  cout << "neutral Calc_RFDeltaTChiSq(): vertex time, rf time, delta-t, chisq = " << locVertexTime << ", " << locPropagatedRFTime << ", " << locDeltaT << ", " << locChiSq << endl;
336 
337  return std::make_pair(locDeltaT, locChiSq);
338 }
339 
340 inline pair<double, double> DSourceComboTimeHandler::Calc_RFDeltaTChiSq(const DChargedTrackHypothesis* locHypothesis, double locVertexTime, double locPropagatedRFTime) const
341 {
342  //calc vertex time, get delta-t cut
343  auto locErrorMatrix = locHypothesis->errorMatrix();
344  auto locVertexTimeVariance = (dUseSigmaForRFSelectionFlag && (locErrorMatrix != nullptr)) ? (*locErrorMatrix)(6, 6) : 1.0;
345  auto locDeltaT = locVertexTime - locPropagatedRFTime;
346  auto locChiSq = locDeltaT*locDeltaT/locVertexTimeVariance;
347  if(dDebugLevel >= 5)
348  cout << "charged Calc_RFDeltaTChiSq(): vertex time, rf time, delta-t, chisq = " << locVertexTime << ", " << locPropagatedRFTime << ", " << locDeltaT << ", " << locChiSq << endl;
349 
350  return std::make_pair(locDeltaT, locChiSq);
351 }
352 
353 inline TF1* DSourceComboTimeHandler::Get_TimeCutFunction(Particle_t locPID, DetectorSystem_t locSystem) const
354 {
355  auto locPIDIterator = dPIDTimingCuts.find(locPID);
356  if(locPIDIterator == dPIDTimingCuts.end())
357  return nullptr;
358 
359  auto& locSystemMap = locPIDIterator->second;
360  auto locSystemIterator = locSystemMap.find(locSystem);
361  if(locSystemIterator == locSystemMap.end())
362  return nullptr;
363 
364  return locSystemIterator->second;
365 }
366 
367 }
368 
369 #endif // DSourceComboTimeHandler_h
unordered_map< const DSourceCombo *, pair< bool, vector< int > > > dUnknownVertexRFBunches
#define SPEED_OF_LIGHT
map< vector< int >, vector< const JObject * >> DPhotonShowersByBeamBunch
TVector3 DVector3
Definition: DVector3.h:14
double Calc_MaxDeltaTError(const DNeutralShower *locNeutralShower, double locTheta) const
map< pair< const DKinematicData *, vector< const DKinematicData * > >, DLorentzVector > dChargedParticlePOCAToVertexX4
unordered_map< signed char, unordered_map< const DNeutralShower *, shared_ptr< const DKinematicData >>> DPhotonKinematicsByZBin
map< Particle_t, map< DetectorSystem_t, vector< pair< float, float > > > > dAllRFDeltaTs
unordered_map< signed char, unordered_map< const JObject *, vector< int > > > dShowerRFBunches
DetectorSystem_t
Definition: GlueX.h:15
int Calc_RFBunchShift(double locTimeToStepTo) const
TLorentzVector DLorentzVector
map< Particle_t, map< DetectorSystem_t, TH2 * > > dHistMap_RFDeltaTVsP_AllRFs
Charge_t
DPhotonKinematicsByZBin Get_PhotonKinematics(void) const
map< Particle_t, map< DetectorSystem_t, vector< pair< float, float > > > > dSelectedRFDeltaTs
map< Particle_t, map< DetectorSystem_t, vector< double > > > dPIDTimingCuts_TF1Params
DLorentzVector dSpacetimeVertex
unordered_map< signed char, DPhotonShowersByBeamBunch > Get_ShowersByBeamBunchByZBin(void) const
shared_ptr< TMatrixFSym > dCovarianceMatrix
unordered_map< int, vector< const DKinematicData * > > dBeamParticlesByRFBunch
map< Particle_t, map< DetectorSystem_t, string > > dPIDTimingCuts_TF1FunctionString
map< Particle_t, map< DetectorSystem_t, TF1 * > > dPIDTimingCuts
unordered_map< signed char, DPhotonShowersByBeamBunch > dShowersByBeamBunchByZBin
unordered_map< const DSourceCombo *, pair< bool, vector< int > > > dPhotonVertexRFBunches
const DEventRFBunch * Get_InitialEventRFBunch(void) const
shared_ptr< const TMatrixFSym > errorMatrix(void) const
const DSourceComboVertexer * dSourceComboVertexer
unordered_map< const DSourceCombo *, pair< bool, vector< int > > > dChargedComboRFBunches
unordered_map< const DSourceCombo *, int > dFullComboRFBunches
const DAnalysisUtilities * dAnalysisUtilities
vector< pair< float, float > > dBeamRFDeltaTs
map< Particle_t, map< DetectorSystem_t, TH2 * > > dHistMap_RFDeltaTVsP_BestRF
Particle_t
Definition: particleType.h:12