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);
47 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
49 void AddOrUpdateDigit(TClonesArray& array,
50 const AliMUONDigit& digit);
54 void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
55 void ApplyResponseToTriggerDigit(AliMUONDigit& digit);
58 AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit) const;
60 Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
62 void GenerateNoisyDigits();
63 void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
65 AliMUONData* GetDataAccess(const TString& folderName);
67 Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
69 void MergeWithSDigits(AliMUONData& outputData, const AliMUONData& inputData,
73 Bool_t fIsInitialized; ///< are we initialized ?
74 AliMUONData* fOutputData; //!< pointer to access digits
75 AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
76 TTask* fTriggerProcessor; ///< pointer to the trigger part of the job
77 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
78 mutable TStopwatch fFindDigitIndexTimer; //!< counting time spent in FindDigitIndex
79 TStopwatch fGenerateNoisyDigitsTimer; //!< counting time spent in GenerateNoisyDigits()
80 TStopwatch fExecTimer; //!< couting time spent in Exec()
81 TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
82 Bool_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker
83 static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use
84 /// for noise-only digit generation and zero-suppression
85 AliMUONLogger* fLogger; //!< to keep track of messages
87 ClassDef(AliMUONDigitizerV3,3) // MUON Digitizer V3-3