// $Id$
// Category: event
//
+// Author: I. Hrivnacova
+//
+// Class AliStackingAction
+// -----------------------
// See the class description in the header file.
#include "AliStackingAction.h"
-#include "AliStackingActionMessenger.h"
#include "AliTrackingAction.h"
#include "AliGlobals.h"
#include <G4Track.hh>
+#include <G4TrackStack.hh>
#include <G4StackedTrack.hh>
#include <G4StackManager.hh>
-#include <G4ios.hh>
-
+#include <G4NeutrinoE.hh>
+#include <G4NeutrinoMu.hh>
+#include <G4NeutrinoTau.hh>
+#include <G4AntiNeutrinoE.hh>
+#include <G4AntiNeutrinoMu.hh>
+#include <G4AntiNeutrinoTau.hh>
+
+//_____________________________________________________________________________
AliStackingAction::AliStackingAction()
: fStage(0),
fVerboseLevel(0),
fSavePrimaries(true),
- fTrackingAction(0)
+ fTrackingAction(0),
+ fMessenger(this)
{
//
fPrimaryStack = new G4TrackStack();
- fMessenger = new AliStackingActionMessenger(this);
}
-AliStackingAction::AliStackingAction(const AliStackingAction& right) {
+//_____________________________________________________________________________
+AliStackingAction::AliStackingAction(const AliStackingAction& right)
+ : fMessenger(this) {
//
AliGlobals::Exception("AliStackingAction is protected from copying.");
}
+//_____________________________________________________________________________
AliStackingAction::~AliStackingAction() {
//
delete fPrimaryStack;
- delete fMessenger;
}
// operators
+//_____________________________________________________________________________
AliStackingAction&
AliStackingAction::operator=(const AliStackingAction &right)
{
// public methods
+//_____________________________________________________________________________
G4ClassificationOfNewTrack
AliStackingAction::ClassifyNewTrack(const G4Track* track)
{
// (secondary particles are stored
// by AlTrackingAction::PreUserTrackingAction() method)
if (fSavePrimaries)
- fTrackingAction->SaveParticle(track, "primary");
+ fTrackingAction->SaveTrack(track);
}
else {
+ // exclude neutrinos
+ G4ParticleDefinition* particle = track->GetDefinition();
+ if( particle == G4NeutrinoE::NeutrinoEDefinition() ||
+ particle == G4NeutrinoMu::NeutrinoMuDefinition() ||
+ particle == G4NeutrinoTau::NeutrinoTauDefinition() ||
+ particle == G4AntiNeutrinoE::AntiNeutrinoEDefinition() ||
+ particle == G4AntiNeutrinoMu::AntiNeutrinoMuDefinition() ||
+ particle == G4AntiNeutrinoTau::AntiNeutrinoTauDefinition()) {
+
+ return fKill;
+ }
+
G4int parentID = track->GetParentID();
if (parentID ==0) {
- classification = fUrgent;
+ return fUrgent;
}
else {
- classification = fWaiting;
+ return fWaiting;
}
}
return classification;
}
+//_____________________________________________________________________________
void AliStackingAction::NewStage()
{
// Called by G4 kernel at the new stage of stacking.
if (fVerboseLevel>0)
{
G4cout << "AliStackingAction::NewStage " << fStage
- << " has been started." << endl;
+ << " has been started." << G4endl;
}
G4int nofUrgent = stackManager->GetNUrgentTrack();
}
}
-void AliStackingAction::ClearPrimaryStack()
-{
-// Clears the primary stack.
-// ---
-
- stackManager->ClearPostponeStack();
-}
-
+//_____________________________________________________________________________
void AliStackingAction::PrepareNewEvent()
{
// Called by G4 kernel at the beginning of event.
// ---
fStage = 0;
- ClearPrimaryStack();
+ //stackManager->ClearPostponeStack();
+ stackManager->ResetPostponeStack();
fTrackingAction = AliTrackingAction::Instance();
- fSavePrimaries = fTrackingAction->GetSavePrimaries();
+ if (fTrackingAction)
+ fSavePrimaries = fTrackingAction->GetSavePrimaries();
+ else
+ fSavePrimaries = false;
}