+ /** Translate VMC coordinates to detector coordinates
+ @param v On output, Current position
+ @param detector On output, detector #
+ @param ring On output, ring id
+ @param sector On output, sector #
+ @param strip On output, strip #
+ @return @c true on success */
+ Bool_t VMC2FMD(TLorentzVector& v, UShort_t& detector,
+ Char_t& ring, UShort_t& sector, UShort_t& strip) const;
+ /** Translate VMC coordinates to detector coordinates
+ @param copy Volume copy number
+ @param v On output, Current position
+ @param detector On output, detector #
+ @param ring On output, ring id
+ @param sector On output, sector #
+ @param strip On output, strip #
+ @return @c true on success */
+ Bool_t VMC2FMD(Int_t copy, TLorentzVector& v,
+ UShort_t& detector, Char_t& ring,
+ UShort_t& sector, UShort_t& strip) const;
+ /** Check if hit is bad. A hit is bad if
+ @f[
+ \Delta E > |Q|^2 p / m > 1
+ @f]
+ holds, where @f$ \Delta E@f$ is the energy loss in this step,
+ @f$ Q@f$ is the particle charge, @f$ p@f$ is the track momentum,
+ and @f$ m@f$ is the particle mass. If a track is marked as
+ bad, it's kept in a cache, and can be printed at the end of the
+ event.
+ @param trackno Track number
+ @param pdg PDG particle type ID
+ @param absQ Absolute value of particle charge
+ @param p Track momentum
+ @param edep Energy loss in this step.
+ @return @c true if hit is `bad' */
+ Bool_t CheckHit(Int_t trackno, Int_t pdg, Float_t absQ,
+ const TLorentzVector& p, Float_t edep) const;
+
+ Double_t fCurrentDeltaE; // The current accumulated energy loss
+ TLorentzVector fCurrentV; // Current production vertex
+ TLorentzVector fCurrentP; // Current momentum vector
+ Int_t fCurrentPdg; // Current PDG code