@@ -661,76 +661,9 @@ void FairMCApplication::FinishRunOnWorker()
661
661
// _____________________________________________________________________________
662
662
void FairMCApplication::Stepping ()
663
663
{
664
- // User actions at each step
665
- // ---
666
-
667
- // Work around for Fluka VMC, which does not call
668
- // MCApplication::PreTrack()
669
- static Int_t TrackId = 0 ;
670
- if ( fMcVersion ==2 && fMC ->GetStack ()->GetCurrentTrackNumber () != TrackId ) {
671
- PreTrack ();
672
- TrackId = fMC ->GetStack ()->GetCurrentTrackNumber ();
673
- }
674
-
675
- // Check if the volume with id is in the volume multimap.
676
- // If it is not in the map the volume is not a sensitive volume
677
- // and we do not call nay of our ProcessHits functions.
678
-
679
- // If the volume is in the multimap, check in second step if the current
680
- // copy is alredy inside the multimap.
681
- // If the volume is not in the multimap add the copy of the volume to the
682
- // multimap.
683
- // In any case call the ProcessHits function for this specific detector.
684
- Int_t copyNo;
685
- Int_t id = fMC ->CurrentVolID (copyNo);
686
- Bool_t InMap =kFALSE ;
687
- fDisVol =0 ;
688
- fDisDet =0 ;
689
- Int_t fCopyNo =0 ;
690
- fVolIter =fVolMap .find (id);
691
-
692
- if (fVolIter !=fVolMap .end ()) {
693
-
694
- // Call Process hits for FairVolume with this id, copyNo
695
- do {
696
- fDisVol =fVolIter ->second ;
697
- fCopyNo =fDisVol ->getCopyNo ();
698
- if (copyNo==fCopyNo ) {
699
- fDisDet =fDisVol ->GetDetector ();
700
- if (fDisDet ) {
701
- fDisDet ->ProcessHits (fDisVol );
702
- }
703
- InMap=kTRUE ;
704
- break ;
705
- }
706
- fVolIter ++;
707
- }
708
- while (fVolIter !=fVolMap .upper_bound (id));
709
-
710
- // if(fDisVol && !InMap) { // fDisVolume is set previously, no check needed
711
-
712
- // Create new FairVolume with this id, copyNo.
713
- // Use the FairVolume with the same id found in the map to get
714
- // the link to the detector.
715
- // Seems that this never happens (?)
716
- if (!InMap) {
717
- // cout << "Volume not in map; fDisVol ? " << fDisVol << endl
718
- FairVolume* fNewV =new FairVolume ( fMC ->CurrentVolName (), id);
719
- fNewV ->setMCid (id);
720
- fNewV ->setModId (fDisVol ->getModId ());
721
- fNewV ->SetModule (fDisVol ->GetModule ());
722
- fNewV ->setCopyNo (copyNo);
723
- fVolMap .insert (pair<Int_t, FairVolume* >(id, fNewV ));
724
- fDisDet =fDisVol ->GetDetector ();
725
-
726
- // LOG(info) << "FairMCApplication::Stepping: new fair volume"
727
- // << id << " " << copyNo << " " << fDisDet;
728
- if ( fDisDet ) {
729
- fDisDet ->ProcessHits (fNewV );
730
- }
731
- }
732
- }
733
-
664
+ Int_t copyNo = 0 ;
665
+ Int_t id = 0 ;
666
+
734
667
// If information about the tracks should be stored the information as to be
735
668
// stored for any step.
736
669
// Information about each single step has also to be stored for the other
@@ -838,11 +771,6 @@ void FairMCApplication::FinishEvent()
838
771
fSaveCurrentEvent = kTRUE ;
839
772
}
840
773
841
- for (auto detectorPtr : listActiveDetectors)
842
- {
843
- detectorPtr->EndOfEvent ();
844
- }
845
-
846
774
fStack ->Reset ();
847
775
if (NULL != fTrajFilter ) {
848
776
fTrajFilter ->Reset ();
@@ -1504,4 +1432,21 @@ void FairMCApplication::UndoGeometryModifications()
1504
1432
1505
1433
}
1506
1434
1435
+ void FairMCApplication::ConstructSensitiveDetectors ()
1436
+ {
1437
+ LOG (info) << " ############ ?????????? Construct sensitive detectors" ;
1438
+
1439
+ for (auto const & x : fMapSensitiveDetectors )
1440
+ {
1441
+ LOG (debug) << " FairMCApplication::ConstructSensitiveDetectors "
1442
+ << x.first << " " << x.second ;
1443
+ TVirtualMC::GetMC ()->SetSensitiveDetector (x.first , x.second );
1444
+ }
1445
+ }
1446
+
1447
+ void FairMCApplication::AddSensitiveModule (std::string volName, FairModule* module )
1448
+ {
1449
+ fMapSensitiveDetectors [volName] = module ;
1450
+ }
1451
+
1507
1452
ClassImp (FairMCApplication)
0 commit comments