4 // See the class description in the header file.
6 #include "AliStackingAction.h"
7 #include "AliStackingActionMessenger.h"
8 #include "AliTrackingAction.h"
9 #include "AliGlobals.h"
12 #include <G4StackedTrack.hh>
13 #include <G4StackManager.hh>
16 AliStackingAction::AliStackingAction()
23 fPrimaryStack = new G4TrackStack();
24 fMessenger = new AliStackingActionMessenger(this);
27 AliStackingAction::AliStackingAction(const AliStackingAction& right) {
29 AliGlobals::Exception("AliStackingAction is protected from copying.");
32 AliStackingAction::~AliStackingAction() {
41 AliStackingAction::operator=(const AliStackingAction &right)
43 // check assignement to self
44 if (this == &right) return *this;
46 AliGlobals::Exception("AliStackingAction is protected from assigning.");
53 G4ClassificationOfNewTrack
54 AliStackingAction::ClassifyNewTrack(const G4Track* track)
56 // Classifies the new track.
59 G4ClassificationOfNewTrack classification;
61 // move all primaries to PrimaryStack
62 G4Track* nonconstTrack = (G4Track*)track;
63 G4StackedTrack* newTrack = new G4StackedTrack(nonconstTrack);
64 fPrimaryStack->PushToStack(newTrack);
65 classification = fPostpone;
67 // save primary particle info
68 // (secondary particles are stored
69 // by AlTrackingAction::PreUserTrackingAction() method)
71 fTrackingAction->SaveParticle(track, "primary");
74 G4int parentID = track->GetParentID();
76 classification = fUrgent;
79 classification = fWaiting;
82 return classification;
85 void AliStackingAction::NewStage()
87 // Called by G4 kernel at the new stage of stacking.
93 G4cout << "AliStackingAction::NewStage " << fStage
94 << " has been started." << endl;
97 G4int nofUrgent = stackManager->GetNUrgentTrack();
100 G4int nofPrimary = fPrimaryStack->GetNTrack();
103 G4StackedTrack* stackedTrack
104 = fPrimaryStack->PopFromStack();
105 G4Track* primaryTrack
106 = stackedTrack->GetTrack();
108 stackManager->PushOneTrack(primaryTrack);
113 void AliStackingAction::ClearPrimaryStack()
115 // Clears the primary stack.
118 stackManager->ClearPostponeStack();
121 void AliStackingAction::PrepareNewEvent()
123 // Called by G4 kernel at the beginning of event.
128 fTrackingAction = AliTrackingAction::Instance();
129 fSavePrimaries = fTrackingAction->GetSavePrimaries();