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;
27 class AliMUONTriggerEfficiencyCells;
32 class AliMUONDigitizerV3 : public AliDigitizer
35 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
36 Bool_t generateNoisyDigits=kTRUE);
37 virtual ~AliMUONDigitizerV3();
39 virtual void Exec(Option_t* opt="");
41 virtual Bool_t Init();
45 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
46 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
48 void AddOrUpdateDigit(TClonesArray& array,
49 const AliMUONDigit& digit);
53 void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
54 void ApplyResponseToTriggerDigit(AliMUONDigit& digit);
57 AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit) const;
59 Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
61 void GenerateNoisyDigits();
62 void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
64 AliMUONData* GetDataAccess(const TString& folderName);
66 Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
68 void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData,
72 Bool_t fIsInitialized; ///< are we initialized ?
73 AliMUONData* fOutputData; //!< pointer to access digits
74 AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
75 TTask* fTriggerProcessor; ///< pointer to the trigger part of the job
76 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
77 mutable TStopwatch fFindDigitIndexTimer; //!< counting time spent in FindDigitIndex
78 TStopwatch fGenerateNoisyDigitsTimer; //!< counting time spent in GenerateNoisyDigits()
79 TStopwatch fExecTimer; //!< couting time spent in Exec()
80 TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
81 Bool_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker
82 static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use
83 /// for noise-only digit generation and zero-suppression
84 AliMUONLogger* fLogger; ///<! to keep track of messages
86 ClassDef(AliMUONDigitizerV3,3) // MUON Digitizer V3-3