1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
7 /// \class AliMUONDigitizerV3
8 /// \brief Digitizer (from SDigit to Digit), performing digit de-calibration.
10 /// \author Laurent Aphecetche
12 #ifndef ALIMUONDIGITIZERV3_H
13 #define ALIMUONDIGITIZERV3_H
15 #ifndef ALIDIGITIZER_H
16 #include "AliDigitizer.h"
19 #ifndef ROOT_TStopwatch
20 # include "TStopwatch.h"
23 class AliMUONCalibrationData;
26 class AliMUONTriggerEfficiencyCells;
31 class AliMUONDigitizerV3 : public AliDigitizer
34 enum ETriggerCodeVersion
40 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
41 ETriggerCodeVersion=kTriggerDecision,
42 Bool_t useTriggerEfficiency=kFALSE,
43 Bool_t generateNoisyDigits=kTRUE);
44 virtual ~AliMUONDigitizerV3();
46 virtual void Exec(Option_t* opt="");
48 virtual Bool_t Init();
52 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
53 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
55 void AddOrUpdateDigit(TClonesArray& array,
56 const AliMUONDigit& digit);
60 void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
61 void ApplyResponseToTriggerDigit(AliMUONDigit& digit, AliMUONData* data);
64 AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit,AliMUONData* data) const;
66 Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
68 void GenerateNoisyDigits();
69 void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
71 AliMUONData* GetDataAccess(const TString& folderName);
73 Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
75 void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData,
79 Bool_t fIsInitialized; // are we initialized ?
80 AliMUONData* fOutputData; //! pointer to access digits
81 AliMUONCalibrationData* fCalibrationData; //! pointer to access calib parameters
82 TTask* fTriggerProcessor; // pointer to the trigger part of the job
83 ETriggerCodeVersion fTriggerCodeVersion; // which version of trigger job
84 Bool_t fUseTriggerEfficiency; // whether or not we should apply trigger efficiency
85 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; // trigger efficiency map
86 mutable TStopwatch fFindDigitIndexTimer; //! counting time spent in FindDigitIndex
87 TStopwatch fGenerateNoisyDigitsTimer; //! counting time spent in GenerateNoisyDigits()
88 TStopwatch fExecTimer; //! couting time spent in Exec()
89 TF1* fNoiseFunction; //! function to randomly get signal above n*sigma_ped
90 Bool_t fGenerateNoisyDigits; //! whether or not we should generate noise-only digits for tracker
91 static const Double_t fgkNSigmas; // number of sigmas above ped to use
92 // for noise-only digit generation and zero-suppression
94 ClassDef(AliMUONDigitizerV3,3) // MUON Digitizer V3-3