Line data Source code
1 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 : * See cxx source for full Copyright notice */
3 :
4 : // $Id$
5 :
6 : /// \ingroup sim
7 : /// \class AliMUONDigitizerV3
8 : /// \brief Digitizer (from SDigit to Digit), performing digit de-calibration.
9 : ///
10 : // Author Laurent Aphecetche
11 :
12 : #ifndef ALIMUONDIGITIZERV3_H
13 : #define ALIMUONDIGITIZERV3_H
14 :
15 : #ifndef ALIDIGITIZER_H
16 : #include "AliDigitizer.h"
17 : #endif
18 :
19 : #include "TArrayI.h"
20 :
21 : class AliMUONCalibrationData;
22 : class AliMUONVDigit;
23 : class AliMUONLogger;
24 : class TClonesArray;
25 : class TF1;
26 : class TString;
27 : class AliMUONVDigitStore;
28 : class AliLoader;
29 : class AliMUONVTriggerStore;
30 : class AliMUONTriggerElectronics;
31 : class AliMUONVCalibParam;
32 : class AliMUONRecoParam;
33 : class AliMUONTriggerChamberEfficiency;
34 : class AliMUONTriggerUtilities;
35 :
36 : class AliMUONDigitizerV3 : public AliDigitizer
37 : {
38 : public:
39 : AliMUONDigitizerV3(AliDigitizationInput* digInput=0,
40 : Int_t generateNoisyDigits=1);
41 :
42 : virtual ~AliMUONDigitizerV3();
43 :
44 : virtual void Digitize(Option_t* opt="");
45 :
46 : virtual Bool_t Init();
47 :
48 : static Int_t DecalibrateTrackerDigit(const AliMUONVCalibParam& pedestals,
49 : Int_t channel,
50 : Float_t charge,
51 : Bool_t addNoise=kFALSE,
52 : Bool_t noiseOnly=kFALSE);
53 :
54 : /// Set calibration (and recoparam) data
55 : void SetCalibrationData(AliMUONCalibrationData* calibrationData, AliMUONRecoParam* recoParam);
56 :
57 : /// Set the number of sigmas for pedestal cut
58 2 : static void SetNSigmas(Double_t nsigmas=4.0) { fgNSigmas = nsigmas; }
59 :
60 : private:
61 : /// Not implemented
62 : AliMUONDigitizerV3(const AliMUONDigitizerV3& other);
63 : /// Not implemented
64 : AliMUONDigitizerV3& operator=(const AliMUONDigitizerV3& other);
65 :
66 : void ApplyResponse(const AliMUONVDigitStore& store, AliMUONVDigitStore& filteredStore);
67 :
68 : void ApplyResponseToTrackerDigit(AliMUONVDigit& digit, Bool_t addNoise);
69 : void ApplyResponseToTriggerDigit(AliMUONVDigit& digit);
70 :
71 : AliLoader* GetLoader(const TString& foldername);
72 :
73 : private:
74 :
75 : void GenerateNoisyDigits(AliMUONVDigitStore& digitStore);
76 : void GenerateNoisyDigitsForOneCathode(AliMUONVDigitStore& digitStore,
77 : Int_t detElemId, Int_t cathode);
78 : void GenerateNoisyDigitsForTrigger(AliMUONVDigitStore& digitStore);
79 :
80 : void MergeWithSDigits(AliMUONVDigitStore*& digitStore,
81 : const AliMUONVDigitStore& input,
82 : Int_t mask);
83 :
84 : static TF1* NoiseFunction();
85 :
86 : void CreateInputDigitStores();
87 :
88 : void BuildTriggerStatusMap();
89 : Int_t GetArrayIndex(Int_t cathode, Int_t trigCh, Int_t localCircuit);
90 :
91 : private:
92 : Bool_t fIsInitialized; ///< are we initialized ?
93 : AliMUONCalibrationData* fCalibrationData; //!<! pointer to access calib parameters
94 : AliMUONTriggerElectronics* fTriggerProcessor; ///< pointer to the trigger part of the job
95 : TF1* fNoiseFunctionTrig; //!<! function to get noise disribution on trig. chambers
96 : Int_t fGenerateNoisyDigits; //!<! whether or not we should generate noise-only digits for tracker (1) and trigger (2)
97 : static Double_t fgNSigmas; ///< \brief number of sigmas above ped to use
98 : /// for noise-only digit generation and zero-suppression
99 : AliMUONLogger* fLogger; //!<! to keep track of messages
100 : AliMUONVTriggerStore* fTriggerStore; //!<! trigger objects
101 : AliMUONVDigitStore* fDigitStore; //!<! temporary digits
102 : AliMUONVDigitStore* fOutputDigitStore; //!<! digits we'll output to disk
103 : TObjArray* fInputDigitStores; //!<! input digit stores (one per input file
104 : AliMUONRecoParam* fRecoParam; //!<! reco params (to know how to decalibrate) (not owner)
105 : AliMUONTriggerChamberEfficiency* fTriggerEfficiency; //!<! trigger efficiency map
106 : AliMUONTriggerUtilities* fTriggerUtilities; //!<! Trigger utilities for masks
107 : TArrayI fEfficiencyResponse; //!<! Local board efficiency response
108 :
109 512 : ClassDef(AliMUONDigitizerV3,11) // MUON Digitizer V3-11
110 : };
111 :
112 : #endif
|