9 #include <tracking/modules/trackTimeEstimator/TrackTimeEstimatorModule.h>
10 #include <framework/logging/Logger.h>
11 #include <framework/core/ModuleParam.templateDetails.h>
16 TrackTimeEstimatorModule::TrackTimeEstimatorModule() :
Module()
18 setPropertyFlags(c_ParallelProcessingCertified);
20 R
"DOC(Computes the track time, defined as the difference between the average of SVD clusters time and the SVDEvent T0)DOC");
23 void TrackTimeEstimatorModule::initialize()
34 auto svdHypos =
m_evtT0->getTemporaryEventT0s(Const::EDetector::SVD);
35 if (svdHypos.size() > 0) {
37 const auto svdBestT0 = svdHypos.back();
40 const auto& recoTrack = track.getRelatedTo<
RecoTrack>();
44 float ingoingArmTime = recoTrack->getIngoingArmTime();
47 if (recoTrack->hasOutgoingArmTime() && recoTrack->hasIngoingArmTime()) {
48 if (outgoingArmTime <= ingoingArmTime) {
49 track.setTrackTime(outgoingArmTime - svdBestT0.eventT0);
51 track.setTrackTime(ingoingArmTime - svdBestT0.eventT0);
53 }
else if (recoTrack->hasOutgoingArmTime() && !recoTrack->hasIngoingArmTime()) {
54 track.setTrackTime(outgoingArmTime - svdBestT0.eventT0);
55 }
else if (!recoTrack->hasOutgoingArmTime() && recoTrack->hasIngoingArmTime()) {
56 track.setTrackTime(ingoingArmTime - svdBestT0.eventT0);
This is the Reconstruction Event-Data Model Track.
float getOutgoingArmTime()
Return the track time of the outgoing arm.
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.
void event()
Loop over all Tracks, get related recoTrack, get SVDHitlist, compute average time,...
StoreObjPtr< EventT0 > m_evtT0
Accessing eventT0, as we want SVDEventT0.
StoreArray< Track > m_tracks
Accessing the Tracks.
StoreArray< RecoTrack > m_recoTracks
Accessing the recoTracks, they have the SVD Hits attached.
REG_MODULE(arichBtest)
Register the Module.
Abstract base class for different kinds of events.