CEvent/Station.h
Go to the documentation of this file.
1 
6 #ifndef _cevt_Station_h_
7 #define _cevt_Station_h_
8 
9 #include <vector>
10 #include <boost/iterator/indirect_iterator.hpp>
11 
12 #include <utl/ShadowPtr.h>
13 #include <utl/AugerException.h>
14 #include <utl/TimeStamp.h>
15 #include <utl/TimeDistribution.h>
16 #include <utl/MultiTimeDistribution.h>
17 #include <utl/TimeDistributionAlgorithm.h>
18 
19 #include <cevt/StationConstants.h>
20 #include <cevt/StationSimData.h>
21 #include <cevt/StationRecData.h>
22 // #include <cevt/StationTriggerData.h>
23 // #include <cevt/StationCalibData.h>
24 // #include <cevt/StationGPSData.h>
25 #include <cevt/Pad.h>
26 
27 
28 static const char CvsId_cevt_Station[] =
29  "$Id$";
30 
31 
32 namespace cevt {
33 
34  class CEvent;
35 
36 
43  class Station {
44 
45  private:
46  typedef std::vector<Pad*>::iterator InternalPadIterator;
47  typedef std::vector<Pad*>::const_iterator InternalConstPadIterator;
48 
49  public:
50  Station(const Station& station);
51  Station& operator=(const Station& station);
52 
54  typedef boost::indirect_iterator<InternalPadIterator, Pad&> PadIterator;
55 
57  typedef boost::indirect_iterator<InternalConstPadIterator, const Pad&> ConstPadIterator;
58 
60  int GetId() const { return fId; }
61 
62 
64 
65  bool HasPad(const unsigned int padId) const;
67 
69  Pad& GetPad(const unsigned int padId);
70  const Pad& GetPad(const unsigned int padId) const;
71 
72 
74  void MakePad(const unsigned int padId);
75 
77  unsigned int GetNumberActivePads()
78  { return fPads.size(); }
79 
80  unsigned int GetNumberActivePads() const
81  { return fPads.size(); }
82 
83 
86  { return PadIterator(fPads.begin()); }
87 
90  { return PadIterator(fPads.end()); }
91 
94  { return ConstPadIterator(fPads.begin()); }
95 
98  { return ConstPadIterator(fPads.end()); }
100 
107 
109 
110  // this should go away with FatBastard
112 
121 
133 
139 
150 
151 
176  // just to track size
178 
179  static std::string GetSignalComponentName(const SignalComponent sc);
182 
184 
185 
188 
190  void SetHitsStartTime(const utl::TimeStamp& Time) { fHitsStartTime = Time; }
191 
193  unsigned int GetTotalHits(const SignalComponent source = eTotal) const;
194 
198  { return fHits->GetTimeDistribution(source); }
199 
200  const utl::TimeDistributionI&
201  GetHits(const SignalComponent source = eTotal) const
202  { return fHits->GetTimeDistribution(source); }
203 
205  void MakeHits(const SignalComponent source = eTotal);
206 
208  bool HasHits(const SignalComponent source = eTotal) const
209  { return fHits->HasLabel(source); }
210 
212  { return *fHits; }
213 
214  void ClearHits()
215  { fHits->Clear(); }
216 
221 
222  HitsIterator HitsBegin() { return fHits->Begin(); }
223  HitsIterator HitsEnd() { return fHits->End(); }
224  ConstHitsIterator HitsBegin() const { return fHits->Begin(); }
225  ConstHitsIterator HitsEnd() const { return fHits->End(); }
226 
227 
229 
231 
234  { return *fSimData; }
235  const StationSimData& GetSimData() const
236  { return *fSimData; }
238  void MakeSimData();
240  bool HasSimData() const { return bool(fSimData); }
241 
244  { return *fRecData; }
245  const StationRecData& GetRecData() const
246  { return *fRecData; }
248  void MakeRecData();
250  bool HasRecData() const { return bool(fRecData); }
251 
252 
253  // CBT not use for now...
254 // /// Get Trigger data for the station
255 // StationTriggerData& GetTriggerData()
256 // { return *fTriggerData; }
257 // const StationTriggerData& GetTriggerData() const
258 // { return *fTriggerData; }
259 // /// Make trigger data object
260 // void MakeTriggerData();
261 // /// Check whether trigger data object exists
262 // bool HasTriggerData() const { return fTriggerData; }
263 
264 // /// Get calibration data for the station
265 // StationCalibData& GetCalibData()
266 // { return *fCalibData; }
267 // const StationCalibData& GetCalibData() const
268 // { return *fCalibData; }
269 // /// Make calibration data object
270 // void MakeCalibData();
271 // /// Check whether calibration data object exists
272 // bool HasCalibData() const { return fCalibData; }
273 
274 // /// Get GPS data for the station
275 // StationGPSData& GetGPSData()
276 // { return *fGPSData; }
277 // const StationGPSData& GetGPSData() const
278 // { return *fGPSData; }
279 // /// Make GPS data object
280 // void MakeGPSData();
281 // /// Check whether GPS data object edists
282 // bool HasGPSData() const { return fGPSData; }
283 // //@}
284 
285 
287 
288 
289  // should go away with FatBastard
294 
312 
313 
315 
316  bool IsCandidate() const { return fReconstructionStatus == eCandidate; }
319  bool IsRejected() const { return fReconstructionStatus == eRejected; }
321  bool IsSilent() const { return fReconstructionStatus == eSilent; }
322 
326  void SetRejected(const int reason)
330 
331  int GetRejectionStatus() const { return fRejectionStatus; }
333 
334  private:
335  Station(const int stationId);
336  ~Station();
337 
338  static const std::string fgSourceNameLookup[eLastSource + 1];
339 
340  int fId;
341  std::vector<Pad*> fPads;
344 // utl::ShadowPtr<StationCalibData> fCalibData;
345 // utl::ShadowPtr<StationTriggerData> fTriggerData;
346 // utl::ShadowPtr<StationGPSData> fGPSData;
351 
352  friend class cevt::CEvent;
353 
354  };
355 
356 
358  public:
359  bool operator()(const Station& station)
360  { return station.IsCandidate(); }
361  };
362 
363 
365  public:
366  bool operator()(const Station& station)
367  { return station.IsSilent(); }
368  };
369 
370 
372  public:
373  RejectedStationFilter(const int statusMask)
374  : fStatusMask(statusMask) { }
375 
376  bool operator()(const Station& station)
377  { return station.GetRejectionStatus() & fStatusMask; }
378 
379  private:
381  };
382 }
383 
384 
385 #include <cevt/Pad.h>
386 #include <cevt/StationSimData.h>
387 #include <cevt/StationRecData.h>
388 // #include <cevt/StationTriggerData.h>
389 // #include <cevt/StationCalibData.h>
390 // #include <cevt/StationGPSData.h>
391 
392 
393 #endif
394 
395 // Configure (x)emacs for this file ...
396 // Local Variables:
397 // mode: c++
398 // compile-command: "make -C .. CEvent/Station.o -k"
399 // End:
static const SignalComponent eBackgroundPhoton
photons from background
RejectedStationFilter(const int statusMask)
static const RejectionStatus eMCInnerRadiusCut
pointer with built-in initialization, deletion, deep copying
Definition: ShadowPtr.h:163
static const SignalComponent eDeltaRay
delta rays
static const RejectionStatus eEngineeringArray
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::iterator, LabeledObjectType > Iterator
Definition: MultiObject.h:78
static const SignalComponent eMySource9
User-defined source.
utl::ShadowPtr< StationSimData > fSimData
static const SignalComponent eMySource5
User-defined source.
static const SignalComponent eMySource2
User-defined source.
static const RejectionStatus eNoRejection
static const SignalComponent ePhotonFromOtherSource
static const SignalComponent eMySource6
User-defined source.
unsigned int GetNumberActivePads() const
Station Level Simulated Data
bool HasSimData() const
Check whether station simulated data exists.
ConstPadIterator PadsEnd() const
end Pad iterator for read
static const SignalComponent ePhotonFromShowerPhoton
ConstHitsIterator HitsBegin() const
Pad & GetPad(const unsigned int padId)
Retrive a Pad by Id.
utl::TimeStamp GetHitsStartTime() const
Get absolute start time of the hits time distribution.
void SetSilent()
Set silent station flag.
static const RejectionStatus eLonely
Describes a particle for Simulation.
Definition: Particle.h:26
static const RejectionStatus eNumRejectionStatusBits
static const SignalComponent ePhotonFromShowerMuon
void MakeHits(const SignalComponent source=eTotal)
Make a time distribution. Source may be specified.
bool IsRejected() const
Check if the station is rejected.
Station(const Station &station)
static const SignalComponent eBackgroundMuon
muons from background
static const SignalComponent eMySource4
User-defined source.
std::vector< Pad * >::const_iterator InternalConstPadIterator
static const SignalComponent eOtherNeutrals
other neutral particles
Histogram class for time distributions with suppressed empty bins.
Class to access station level reconstructed data.
static const SignalComponent eMySource0
User-defined source.
static const SignalComponent eElectronFromOtherSource
static const SignalComponent eHadron
all hadrons from shower
bool operator()(const Station &station)
static const SignalComponent eDecayElectron
electrons from muon decay
static const SignalComponent eMySource3
User-defined source.
static const SignalComponent eBackgroundHadron
hadrons from background
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::const_iterator, LabeledObjectType > ConstIterator
Definition: MultiObject.h:81
static const SignalComponent eTotal
total (shower and background)
static const SignalComponent ePhoton
gammas from shower
A TimeStamp holds GPS second and nanosecond for some event.
Definition: TimeStamp.h:110
static std::string GetSignalComponentName(const SignalComponent sc)
bool IsCandidate() const
Check if the station is a candidate.
class to hold data at Pad level
Definition: Pad.h:27
static const SignalComponent eLastSource
utl::InitializedShadowPtr< utl::MultiTimeDistributionI > fHits
bool IsSilent() const
Check if the station is silent.
HitsIterator HitsBegin()
static const SignalComponent eElectronFromShowerPhoton
void SetCandidate()
Set candidate station flag.
bool HasPad(const unsigned int padId) const
Check if a particular Pad object exists.
void SetHitsStartTime(const utl::TimeStamp &Time)
Set absolute start time of the hits time distribution.
int GetId() const
Get the station Id.
static const SignalComponent eMySource7
User-defined source.
static const SignalComponent eShowerMuonDecayElectron
electrons from muon decay in shower
ReconstructionStatus fReconstructionStatus
static const RejectionStatus eNoRecData
static const RejectionStatus eNoTrigger
Station & operator=(const Station &station)
static const RejectionStatus eNoCalibData
static const RejectionStatus eNoGPSData
void MakeRecData()
Make station reconstructed data object.
static const RejectionStatus eErrorCode
bool HasHits(const SignalComponent source=eTotal) const
Check if a digitized signal exists. Source may be specified.
StationRecData & GetRecData()
Get station level reconstructed data.
utl::TimeDistributionI & GetHits(const SignalComponent source=eTotal)
Time distribution of hits.
ConstHitsIterator HitsEnd() const
static const SignalComponent eElectronFromShowerElectron
separate electron components
void SetRejected(const int reason)
Set rejected station flag.
static const SignalComponent eMySource1
User-defined source.
unsigned int GetTotalHits(const SignalComponent source=eTotal) const
Get the total number of counts, optionally specifying a component.
static const ReconstructionStatus eSilent
static const char CvsId_cevt_Station[]
StationConstants::SignalComponent SignalComponent
const StationRecData & GetRecData() const
const utl::TimeDistributionI & GetHits(const SignalComponent source=eTotal) const
ConstPadIterator PadsBegin() const
begin Pad iterator for read
class to hold data at Station level
void ClearRejectionStatus()
boost::indirect_iterator< InternalPadIterator, Pad & > PadIterator
Iterator over station for read/write.
PadIterator PadsEnd()
end Pad iterator for read/write
static const ReconstructionStatus eCandidate
std::vector< Pad * > fPads
static const SignalComponent ePhotonFromShowerElectron
secondary photons
unsigned int GetNumberActivePads()
Get the number of pads with signal.
const StationSimData & GetSimData() const
static const RejectionStatus eBadCalib
static const RejectionStatus eOffGrid
static const SignalComponent eShowerMuonDecayPhoton
photons from muon decay in shower
utl::TimeStamp fHitsStartTime
total (shower and background)
static const SignalComponent eMuon
mu+ and mu- (including signal from mu decay electrons) from shower
static const SignalComponent eMySource8
User-defined source.
static const std::string fgSourceNameLookup[eLastSource+1]
static const RejectionStatus eDenseArray
utl::ShadowPtr< StationRecData > fRecData
HitsIterator HitsEnd()
utl::MultiTimeDistributionI::ConstIterator ConstHitsIterator
static const SignalComponent eElectron
electrons and positrons from shower
static const RejectionStatus eNotDenseArray
std::vector< Pad * >::iterator InternalPadIterator
StationConstants::RejectionStatus RejectionStatus
static const RejectionStatus eOutOfTime
static cevt::Station::SignalComponent GetSignalComponent(const utl::Particle &)
void MakePad(const unsigned int padId)
Make a Pad by Id.
StationConstants::ReconstructionStatus ReconstructionStatus
bool HasRecData() const
Check whether station reconstructed data exists.
static const SignalComponent eElectronFromShowerMuon
PadIterator PadsBegin()
begin Pad iterator for read/write
bool operator()(const Station &station)
utl::MultiTimeDistributionI::Iterator HitsIterator
int GetRejectionStatus() const
static const ReconstructionStatus eRejected
bool operator()(const Station &station)
StationSimData & GetSimData()
Get simulated data at station level.
static const SignalComponent eBackgroundElectron
electrons from background
boost::indirect_iterator< InternalConstPadIterator, const Pad & > ConstPadIterator
Iterator over station for read.
const utl::MultiTimeDistributionI & GetMultiHits()
Interface class to access to the SD part of an event.
Definition: CEvent.h:46
void MakeSimData()
Make station simulated data object.

, generated on Tue Sep 26 2023.