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 class AliMUONCalibrationData;
22 class AliMUONTriggerEfficiencyCells;
26 class AliMUONVDigitStore;
28 class AliMUONVTriggerStore;
29 class AliMUONTriggerElectronics;
30 class AliMUONVCalibParam;
32 class AliMUONDigitizerV3 : public AliDigitizer
35 AliMUONDigitizerV3(AliRunDigitizer* manager=0,
36 Int_t generateNoisyDigits=1);
37 virtual ~AliMUONDigitizerV3();
39 virtual void Exec(Option_t* opt="");
41 virtual Bool_t Init();
43 static Int_t DecalibrateTrackerDigit(const AliMUONVCalibParam& pedestals,
44 const AliMUONVCalibParam& gains,
47 Bool_t addNoise=kFALSE);
51 AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
53 AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
55 void ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore);
57 void ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise);
58 void ApplyResponseToTriggerDigit(const AliMUONVDigitStore& digitStore, AliMUONVDigit& digit);
60 AliLoader* GetLoader(const TString& foldername);
64 AliMUONVDigit* FindCorrespondingDigit(const AliMUONVDigitStore& digitStore,
65 AliMUONVDigit& digit) const;
67 void GenerateNoisyDigits(AliMUONVDigitStore& digitStore);
68 void GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore,
69 Int_t detElemId, Int_t cathode);
70 void GenerateNoisyDigitsForTrigger(AliMUONVDigitStore& digitStore);
72 void MergeWithSDigits(AliMUONVDigitStore*& digitStore,
73 const AliMUONVDigitStore& input,
77 Bool_t fIsInitialized; ///< are we initialized ?
78 AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
79 AliMUONTriggerElectronics* fTriggerProcessor; ///< pointer to the trigger part of the job
80 AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
81 TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
82 TF1* fNoiseFunctionTrig; //!< function to get noise disribution on trig. chambers
83 Int_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker (1) and trigger (2)
84 static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use
85 /// for noise-only digit generation and zero-suppression
86 AliMUONLogger* fLogger; //!< to keep track of messages
87 AliMUONVTriggerStore* fTriggerStore; //!< trigger objects
88 AliMUONVDigitStore* fDigitStore; //!< temporary digits
89 AliMUONVDigitStore* fOutputDigitStore; //!< digits we'll output to disk
91 ClassDef(AliMUONDigitizerV3,6) // MUON Digitizer V3-5