1 #ifndef ALITRDMCMSIMCONFIGHANDLER_H
2 #define ALITRDMCMSIMCONFIGHANDLER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 ////////////////////////////////////////////////////////////////
8 // Multi Chip Module Simulation Configuration Handler Class //
10 ////////////////////////////////////////////////////////////////
16 class AliTRDtrapConfig;
20 class AliTRDtrapConfigHandler : public TObject {
22 AliTRDtrapConfigHandler();
23 virtual ~AliTRDtrapConfigHandler();
25 void ResetMCMs(); // Reset all trap registers and DMEM of the MCMs
26 Int_t LoadConfig(TString filename, Int_t det); // load a TRAP configuration from a file
28 void ProcessLTUparam(Int_t dest, Int_t addr, UInt_t data); // Process the LTU parameters
29 void PrintGeoTest(); // Prints some information about the geometry. Only for debugging
31 // UInt_t peek(Int_t rob, Int_t mcm, Int_t addr); // not implemented yet
32 // Int_t poke(Int_t rob, Int_t mcm, Int_t addr, UInt_t value); // not implemented yet
35 void ConfigureDyCorr(); // deflection length correction due to Lorentz angle and tilted pad correction
36 void ConfigureDRange(); // deflection range LUT, range calculated according to B-field (in T) and pt_min (in GeV/c)
37 void ConfigureNTimebins(); // timebins in the drift region
38 void ConfigurePIDcorr(); // Calculate the mcm individual correction factors for the PID
40 Int_t GetPadPosNonRot(Int_t rob, Int_t mcm, Int_t channel, Double_t trackCoor[3]); // calcutate the gobal coordinates for an mcm channel in the supermodule at position -0.5
41 void GetLocalPadPos(AliTRDpadPlane *plane, Int_t rob, Int_t mcm, Int_t channel, Double_t result[2]); // calculate the local coordinates for an mcm channel
43 Double_t Square(Double_t val); // returns the square of a given number
45 AliTRDtrapConfigHandler(const AliTRDtrapConfigHandler &h); // not implemented
46 AliTRDtrapConfigHandler &operator=(const AliTRDtrapConfigHandler &h); // not implemented
50 static const UInt_t fgkScsnCmdWrite=10; // SCSN command for the write command
51 static const UInt_t fgkScsnLTUparam=27; // extended SCSN command for the LTU configuration
53 static const Int_t fgkDyMaxCut = 63; // Maximum value of the deflection cut
54 static const Int_t fgkDyMinCut = -64; // Minimum value of the deflection cut
56 static const Int_t fgkMCMperROBCol = 4; // MCMs per ROB column
57 static const Int_t fgkPadsPerMCM = 18; // readout pads per MCM
58 static const Int_t fgkMCMperROBRow = 4; // MCMs per ROB row
61 AliTRDgeometry *fGeo; // Pointer to the AliTRDgeometry class
63 Int_t fDet; // detector number (0 - 539)
65 Double_t fBField; // value of the L3 magnet field
66 Double_t fOmegaTau; // ometa tau
67 Double_t fPtMin; // lower p_t threshold for the tracks which should pass the deflection cut
68 Int_t fNTimebins; // Number of time bins in the drift region (only relevant for GTU)
69 UInt_t fScaleQ0; // scale parameter to map the accumulated charge in the first time window to a memory address
70 UInt_t fScaleQ1; // scale parameter to map the accumulated charge in the second time window to a memory address
71 Bool_t fPidTracklengthCorr; // Factor to correct the accumulated charge for track length effects
72 Bool_t fTiltCorr; // tilting correction
75 ClassDef(AliTRDtrapConfigHandler,0)