@@ -37,6 +37,7 @@ class TLorentzVector;
37
37
class TGeoHMatrix ;
38
38
class TArrayI ;
39
39
class TArrayD ;
40
+ class TVirtualMCSensitiveDetector ;
40
41
41
42
class TVirtualMC : public TNamed {
42
43
@@ -435,6 +436,26 @@ class TVirtualMC : public TNamed {
435
436
// / Return the copyNo of i-th daughter of the volume specified by volName
436
437
virtual Int_t VolDaughterCopyNo (const char * volName, Int_t i) const = 0;
437
438
439
+ //
440
+ // ------------------------------------------------
441
+ // methods for sensitive detectors
442
+ // ------------------------------------------------
443
+ //
444
+
445
+ // / Set a sensitive detector to a volume
446
+ // / - volName - the volume name
447
+ // / - sd - the user sensitive detector
448
+ virtual void SetSensitiveDetector (const TString &volName, TVirtualMCSensitiveDetector *sd);
449
+
450
+ // / Get a sensitive detector of a volume
451
+ // / - volName - the volume name
452
+ virtual TVirtualMCSensitiveDetector *GetSensitiveDetector (const TString &volName) const ;
453
+
454
+ // / The scoring option:
455
+ // / if true, scoring is performed only via user defined sensitive detectors and
456
+ // / MCApplication::Stepping is not called
457
+ virtual void SetExclusiveSDScoring (Bool_t exclusiveSDScoring);
458
+
438
459
//
439
460
// ------------------------------------------------
440
461
// methods for physics management
@@ -695,7 +716,7 @@ class TVirtualMC : public TNamed {
695
716
696
717
// / Return the current position in the master reference frame of the
697
718
// / track being transported (as float)
698
- virtual void TrackPosition (Float_t &x, Float_t &y, Float_t &z) const ;
719
+ virtual void TrackPosition (Float_t &x, Float_t &y, Float_t &z) const =0 ;
699
720
700
721
// / Return the direction and the momentum (GeV/c) of the track
701
722
// / currently being transported
@@ -707,7 +728,7 @@ class TVirtualMC : public TNamed {
707
728
708
729
// / Return the direction and the momentum (GeV/c) of the track
709
730
// / currently being transported (as float)
710
- virtual void TrackMomentum (Float_t &px, Float_t &py, Float_t &pz, Float_t &etot) const ;
731
+ virtual void TrackMomentum (Float_t &px, Float_t &py, Float_t &pz, Float_t &etot) const =0 ;
711
732
712
733
// / Return the length in centimeters of the current step (in cm)
713
734
virtual Double_t TrackStep () const =0;
@@ -721,6 +742,9 @@ class TVirtualMC : public TNamed {
721
742
// / Return the energy lost in the current step
722
743
virtual Double_t Edep () const =0;
723
744
745
+ // / Return the non-ionising energy lost (NIEL) in the current step
746
+ virtual Double_t NIELEdep () const ;
747
+
724
748
//
725
749
// get methods
726
750
// tracking particle
@@ -888,18 +912,41 @@ class TVirtualMC : public TNamed {
888
912
889
913
// inline functions (with temorary implementation)
890
914
891
- inline void TVirtualMC::TrackPosition (Float_t & /* x */ , Float_t & /* y */ , Float_t & /* z */ ) const
915
+ inline void TVirtualMC::SetSensitiveDetector ( const TString & /* volName */ , TVirtualMCSensitiveDetector */*sd */)
892
916
{
893
- // / Return the current position in the master reference frame of the
894
- // / track being transported (as float)
895
- Warning (" TrackPosition(Float_t& ...)" , " New function - not yet implemented." );
917
+ // / Set a sensitive detector to a volume
918
+ // / - volName - the volume name
919
+ // / - sd - the user sensitive detector
920
+
921
+ Warning (" SetSensitiveDetector(...)" , " New function - not yet implemented." );
896
922
}
897
923
898
- inline void TVirtualMC::TrackMomentum (Float_t & /* px */ , Float_t & /* py */ , Float_t & /* pz */ , Float_t & /* etot */ ) const
924
+ inline TVirtualMCSensitiveDetector * TVirtualMC::GetSensitiveDetector ( const TString & /* volName */ ) const
899
925
{
900
- // / Return the direction and the momentum (GeV/c) of the track
901
- // / currently being transported (as float)
902
- Warning (" TrackPosition(Float_t& ...)" , " New function - not yet implemented." );
926
+ // / Get a sensitive detector of a volume
927
+ // / - volName - the volume name
928
+
929
+ Warning (" GetSensitiveDetector()" , " New function - not yet implemented." );
930
+
931
+ return 0 ;
932
+ }
933
+
934
+ inline void TVirtualMC::SetExclusiveSDScoring (Bool_t /* exclusiveSDScoring*/ )
935
+ {
936
+ // / The scoring option:
937
+ // / if true, scoring is performed only via user defined sensitive detectors and
938
+ // / MCApplication::Stepping is not called
939
+
940
+ Warning (" SetExclusiveSDScoring(...)" , " New function - not yet implemented." );
941
+ }
942
+
943
+ inline Double_t TVirtualMC::NIELEdep () const
944
+ {
945
+ // / Return the non-ionising energy lost (NIEL) in the current step
946
+
947
+ Warning (" NIELEdep()" , " New function - not yet implemented." );
948
+
949
+ return 0 .;
903
950
}
904
951
905
952
#define gMC (TVirtualMC::GetMC())
0 commit comments