In AliMUON:
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Jul 2010 15:59:22 +0000 (15:59 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Jul 2010 15:59:22 +0000 (15:59 +0000)
Adding the option fIsMaxStep which allows to inactivate calls to gMC->SetMaxStep in StepManager (required for simulation with Fluka)

MUON/AliMUON.cxx
MUON/AliMUON.h
MUON/AliMUONv1.cxx
MUON/Config.C

index 9db2fc3..171ee97 100644 (file)
@@ -92,6 +92,7 @@ AliMUON::AliMUON()
     fMaxDestepAlu(0.),
     fMaxIterPad(0),
     fCurIterPad(0),
+    fIsMaxStep(kTRUE),
     fTriggerScalerEvent(kFALSE),
     fTriggerResponseV1(kFALSE),
     fTriggerCoinc44(0),
@@ -128,6 +129,7 @@ AliMUON::AliMUON(const char *name, const char* title)
     fMaxDestepAlu(-1), // in the calculation of the tracking parameters
     fMaxIterPad(0),
     fCurIterPad(0),
+    fIsMaxStep(kTRUE),
     fTriggerScalerEvent(kFALSE),
     fTriggerResponseV1(kFALSE),
     fTriggerCoinc44(0),
index 186ec10..12c4776 100644 (file)
@@ -95,7 +95,10 @@ class AliMUON : public  AliDetector
     // Set alignement option
     virtual void  SetAlign(Bool_t align = true);
     virtual void  SetAlign(const TString& fileName, Bool_t align = true);
-
+    
+                    /// Set flag to inactivate calls to gMC->SetMaxStep
+    virtual void  SetIsMaxStep(Bool_t isMaxStep) { fIsMaxStep = isMaxStep; }
+    
                    /// Set scaler event for trigger
     virtual void  SetTriggerScalerEvent(Bool_t scaler = true){fTriggerScalerEvent = scaler;}
 
@@ -165,6 +168,7 @@ class AliMUON : public  AliDetector
     Int_t fCurIterPad;        ///< Current pad index
    
     // Options
+    Bool_t fIsMaxStep;          ///< Flag to inactivate calls to gMC->SetMaxStep
     Bool_t fTriggerScalerEvent; ///< Flag to generates scaler event
     Bool_t fTriggerResponseV1;  ///< Flag to select TriggerResponseV1
     Int_t  fTriggerCoinc44;     ///< Flag to select TriggerCoinc44 
@@ -183,7 +187,7 @@ class AliMUON : public  AliDetector
     
     AliMUONCalibrationData* fCalibrationData; ///< pointer of calibration data
 
-    ClassDef(AliMUON,21)  // MUON Detector base class
+    ClassDef(AliMUON,22)  // MUON Detector base class
 };
 #endif
 
index ce0a697..1718b69 100644 (file)
@@ -321,7 +321,9 @@ void AliMUONv1::StepManager()
   
   if( gMC->IsTrackEntering() ) {
      Float_t theta = fTrackMomentum.Theta();
-     if ((TMath::Pi()-theta)*kRaddeg>=15.) gMC->SetMaxStep(fStepMaxInActiveGas); // We use Pi-theta because z is negative
+     if ( fIsMaxStep && (TMath::Pi()-theta)*kRaddeg>=15. ) {
+       gMC->SetMaxStep(fStepMaxInActiveGas); // We use Pi-theta because z is negative
+     }  
      iEnter = 1;
      gMC->TrackPosition(xyzEnter[0], xyzEnter[1], xyzEnter[2]); // save coordinates of entrance point
   }
@@ -355,9 +357,10 @@ void AliMUONv1::StepManager()
        gMC->IsTrackDisappeared()||
        (fStepSum[idvol]>fStepMaxInActiveGas) ) {
     
-    if   ( gMC->IsTrackExiting() || 
-           gMC->IsTrackStop() || 
-           gMC->IsTrackDisappeared() ) gMC->SetMaxStep(kBig);
+    if   ( fIsMaxStep && 
+           ( gMC->IsTrackExiting() || 
+             gMC->IsTrackStop() || 
+             gMC->IsTrackDisappeared() ) ) gMC->SetMaxStep(kBig);
     if (fDestepSum[idvol] == 0) {
       // AZ - no energy release
       fStepSum[idvol] = 0; // Reset for the next event
index 0b085c9..cbf3b22 100644 (file)
@@ -214,6 +214,9 @@ void Config(char directory[100]="", char option[6]="param", const char* digitsto
   // activate trigger chamber efficiency by cells (0=default, 1=trigger efficiency according to AliMUONTriggerEfficiencyCells
   //  MUON->SetTriggerEffCells(0);
 
+  // Activate the following line when running with Fluka
+  // MUON->SetIsMaxStep(kFALSE);
+
   // Use SetDigitStoreClassName() to change the digitStore implementation used by (s)digitizer
   MUON->SetDigitStoreClassName(digitstore);