From d631bec84f82b2105ae7d201e913a2863ef01d76 Mon Sep 17 00:00:00 2001 From: ivana Date: Mon, 19 Jul 2010 15:59:22 +0000 Subject: [PATCH] In AliMUON: Adding the option fIsMaxStep which allows to inactivate calls to gMC->SetMaxStep in StepManager (required for simulation with Fluka) --- MUON/AliMUON.cxx | 2 ++ MUON/AliMUON.h | 8 ++++++-- MUON/AliMUONv1.cxx | 11 +++++++---- MUON/Config.C | 3 +++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/MUON/AliMUON.cxx b/MUON/AliMUON.cxx index 9db2fc3930b..171ee97d07c 100644 --- a/MUON/AliMUON.cxx +++ b/MUON/AliMUON.cxx @@ -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), diff --git a/MUON/AliMUON.h b/MUON/AliMUON.h index 186ec1089d1..12c4776799d 100644 --- a/MUON/AliMUON.h +++ b/MUON/AliMUON.h @@ -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 diff --git a/MUON/AliMUONv1.cxx b/MUON/AliMUONv1.cxx index ce0a6974e59..1718b69fc85 100644 --- a/MUON/AliMUONv1.cxx +++ b/MUON/AliMUONv1.cxx @@ -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 diff --git a/MUON/Config.C b/MUON/Config.C index 0b085c981f2..cbf3b22299a 100644 --- a/MUON/Config.C +++ b/MUON/Config.C @@ -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); -- 2.39.3