]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - AliGeant4/AliStackingAction.cxx
added tests for existence trackingAction
[u/mrichter/AliRoot.git] / AliGeant4 / AliStackingAction.cxx
index 36518b57e5c30b9e1a494722b1aba5cb7b5549e3..b6efe7f420ac9cc57b8c6227648891b8b58b59fe 100644 (file)
@@ -1,42 +1,55 @@
 // $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)
 {
@@ -50,6 +63,7 @@ AliStackingAction::operator=(const AliStackingAction &right)
 
 // public methods
 
+//_____________________________________________________________________________
 G4ClassificationOfNewTrack 
 AliStackingAction::ClassifyNewTrack(const G4Track* track)
 {
@@ -68,20 +82,33 @@ 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.
@@ -91,7 +118,7 @@ void AliStackingAction::NewStage()
   if (fVerboseLevel>0) 
   {
     G4cout << "AliStackingAction::NewStage " << fStage 
-           << " has been started." << endl;
+           << " has been started." << G4endl;
   }
 
   G4int nofUrgent = stackManager->GetNUrgentTrack();
@@ -110,23 +137,20 @@ void AliStackingAction::NewStage()
   }
 }
     
-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;
 }