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 ////////////////////////////////////////////////////////////////
14 #include "AliTRDltuParam.h"
16 class AliTRDtrapConfig;
18 class AliTRDtrapConfigHandler : public TObject {
20 AliTRDtrapConfigHandler();
21 virtual ~AliTRDtrapConfigHandler();
23 void ResetMCMs(); // Reset all trap registers and DMEM of the MCMs
24 Int_t LoadConfig(); // load a default configuration suitable for simulation
25 Int_t LoadConfig(TString filename); // load a TRAP configuration from a file
27 void ProcessLTUparam(Int_t dest, Int_t addr, UInt_t data); // Process the LTU parameters
28 void PrintGeoTest(); // Prints some information about the geometry. Only for debugging
30 // UInt_t peek(Int_t rob, Int_t mcm, Int_t addr); // not implemented yet
31 // Int_t poke(Int_t rob, Int_t mcm, Int_t addr, UInt_t value); // not implemented yet
34 void ConfigureDyCorr(Int_t det); // deflection length correction due to Lorentz angle and tilted pad correction
35 void ConfigureDRange(Int_t det); // deflection range LUT, range calculated according to B-field (in T) and pt_min (in GeV/c)
36 void ConfigureNTimebins(Int_t det); // timebins in the drift region
37 void ConfigurePIDcorr(Int_t det); // Calculate the mcm individual correction factors for the PID
39 Double_t Square(Double_t val) { return val*val; }; // returns the square of a given number
41 AliTRDtrapConfigHandler(const AliTRDtrapConfigHandler &h); // not implemented
42 AliTRDtrapConfigHandler &operator=(const AliTRDtrapConfigHandler &h); // not implemented
44 static const UInt_t fgkScsnCmdReset=6; // SCSN command for reset
45 static const UInt_t fgkScsnCmdPause=8; // SCSN command to pause
46 static const UInt_t fgkScsnCmdRead=9; // SCSN command to read
47 static const UInt_t fgkScsnCmdWrite=10; // SCSN command to write
48 static const UInt_t fgkScsnCmdPtrg=12; // SCSN command for pretrigger
49 static const UInt_t fgkScsnCmdRobPower=16; // SCSN command to switch ROB power
50 static const UInt_t fgkScsnCmdRobReset=17; // SCSN command for ROB reset
52 static const UInt_t fgkScsnCmdRestr=18; // SCSN command to restrict commands to specified chambers
53 static const UInt_t fgkScsnCmdTtcRx=19; // SCSN command to configure TTCrx
54 static const UInt_t fgkScsnCmdHwPtrg=20; // SCSN command to issue pretrigger pulse
55 static const UInt_t fgkScsnCmdSetHC=22; // SCSN command to set HC ID
56 static const UInt_t fgkScsnCmdMcmTemp=24; // SCSN command for MCM temperature sensors
57 static const UInt_t fgkScsnCmdPM=25; // SCSN command for patchmaker
58 static const UInt_t fgkScsnCmdOri=26; // SCSN command for ORI configuration
59 static const UInt_t fgkScsnLTUparam=27; // extended SCSN command for the LTU configuration
61 static const Int_t fgkMCMperROBCol = 4; // MCMs per ROB column
62 static const Int_t fgkPadsPerMCM = 18; // readout pads per MCM
63 static const Int_t fgkMCMperROBRow = 4; // MCMs per ROB row
65 AliTRDltuParam ltuParam; // ltuParam class for the actual calculation of the parameters
67 UInt_t fRestrictiveMask; // mask to restrict subsequent commands to specified chambers
69 ClassDef(AliTRDtrapConfigHandler,0)