#pragma once #include "ICOMETEvent.hxx" #include "IG4VHit.hxx" #include "IGeometryId.hxx" struct ITriggerCandidate { ITriggerCandidate(int tid, int pid); ~ITriggerCandidate(); void UpdateCTH( const COMET::IGeometryId & id, const COMET::IG4VHit * hit); bool FinalizeCTH(); void UpdateCDC( const COMET::IGeometryId & id, const COMET::IG4VHit * hit); bool FinalizeCDC(double momentumMin, double momentumMax, bool checkTrack, bool dumpJson); bool DumpJson(const std::string & path, const char * filename, COMET::ICOMETEvent & event); bool DumpPrimary( const std::string & path, COMET::ICOMETEvent & event); static const char *& Tag(); static bool UpdateGeometry(); int trackId; int pdgId; int cdcLayerMin; int cdcLayerMax; int crvTracks; double cdcZMin; double cdcZMax; double cdcMomentumMin; double cdcMomentumMax; double cdcMomentumMean; double cdcT0; double cdcT1; double crvT0; double crvT1; double cthT0; double cthT1; struct { double x0, y0, R0, w0, phi0, momentum; } cdcFit; COMET::IG4HitContainer cthHits; COMET::IG4HitContainer cdcHits; private: #define CTH_MAX_SEGMENTS 64 char fTrigger[2][2][CTH_MAX_SEGMENTS]; };