#include "AliDigitizer.h"
#endif
-#ifndef ROOT_TStopwatch
-# include "TStopwatch.h"
-#endif
-
class AliMUONCalibrationData;
-class AliMUONSimData;
-class AliMUONDigit;
+class AliMUONVDigit;
class AliMUONLogger;
-class AliMUONTriggerEfficiencyCells;
class TClonesArray;
class TF1;
class TString;
+class AliMUONVDigitStore;
+class AliLoader;
+class AliMUONVTriggerStore;
+class AliMUONTriggerElectronics;
+class AliMUONVCalibParam;
class AliMUONDigitizerV3 : public AliDigitizer
{
public:
AliMUONDigitizerV3(AliRunDigitizer* manager=0,
- Bool_t generateNoisyDigits=kTRUE);
+ Int_t generateNoisyDigits=1);
virtual ~AliMUONDigitizerV3();
virtual void Exec(Option_t* opt="");
virtual Bool_t Init();
+ static Int_t DecalibrateTrackerDigit(const AliMUONVCalibParam& pedestals,
+ const AliMUONVCalibParam& gains,
+ Int_t channel,
+ Float_t charge,
+ Bool_t addNoise=kFALSE);
+
private:
/// Not implemented
AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
/// Not implemented
AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
-
- void AddOrUpdateDigit(TClonesArray& array,
- const AliMUONDigit& digit);
- void ApplyResponse();
+ void ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore);
- void ApplyResponseToTrackerDigit(AliMUONDigit& digit, Bool_t addNoise);
- void ApplyResponseToTriggerDigit(AliMUONDigit& digit);
+ void ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise);
-private:
- AliMUONDigit* FindCorrespondingDigit(AliMUONDigit& digit) const;
+ AliLoader* GetLoader(const TString& foldername);
- Int_t FindDigitIndex(TClonesArray& array, const AliMUONDigit& digit) const;
-
- void GenerateNoisyDigits();
- void GenerateNoisyDigitsForOneCathode(Int_t detElemId, Int_t cathode);
-
- AliMUONSimData* GetDataAccess(const TString& folderName);
+private:
- Bool_t MergeDigits(const AliMUONDigit& src, AliMUONDigit& srcAndDest);
+ void GenerateNoisyDigits(AliMUONVDigitStore& digitStore);
+ void GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore,
+ Int_t detElemId, Int_t cathode);
+ void GenerateNoisyDigitsForTrigger(AliMUONVDigitStore& digitStore);
- void MergeWithSDigits(AliMUONSimData& outputData, const AliMUONSimData& inputData,
+ void MergeWithSDigits(AliMUONVDigitStore*& digitStore,
+ const AliMUONVDigitStore& input,
Int_t mask);
private:
Bool_t fIsInitialized; ///< are we initialized ?
- AliMUONSimData* fOutputData; //!< pointer to access digits
AliMUONCalibrationData* fCalibrationData; //!< pointer to access calib parameters
- TTask* fTriggerProcessor; ///< pointer to the trigger part of the job
- AliMUONTriggerEfficiencyCells* fTriggerEfficiency; ///< trigger efficiency map
- mutable TStopwatch fFindDigitIndexTimer; //!< counting time spent in FindDigitIndex
- TStopwatch fGenerateNoisyDigitsTimer; //!< counting time spent in GenerateNoisyDigits()
- TStopwatch fExecTimer; //!< couting time spent in Exec()
+ AliMUONTriggerElectronics* fTriggerProcessor; ///< pointer to the trigger part of the job
TF1* fNoiseFunction; //!< function to randomly get signal above n*sigma_ped
- Bool_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker
+ TF1* fNoiseFunctionTrig; //!< function to get noise disribution on trig. chambers
+ Int_t fGenerateNoisyDigits; //!< whether or not we should generate noise-only digits for tracker (1) and trigger (2)
static const Double_t fgkNSigmas; ///< \brief number of sigmas above ped to use
/// for noise-only digit generation and zero-suppression
AliMUONLogger* fLogger; //!< to keep track of messages
+ AliMUONVTriggerStore* fTriggerStore; //!< trigger objects
+ AliMUONVDigitStore* fDigitStore; //!< temporary digits
+ AliMUONVDigitStore* fOutputDigitStore; //!< digits we'll output to disk
- ClassDef(AliMUONDigitizerV3,4) // MUON Digitizer V3-3
+ ClassDef(AliMUONDigitizerV3,6) // MUON Digitizer V3-5
};
#endif