]>
Commit | Line | Data |
---|---|---|
aa9dd72b | 1 | $Id$ |
2 | ||
e661d480 | 3 | How to test the Shuttle preprocessor(s) for MUON. |
4 | ||
5 | We will get two "logical" MUON preprocessors : one for the tracker and one for the trigger. | |
6 | Both will manage several subtasks (e.g. the tracker one will handle pedestals, | |
7 | gains and deadchannels, while the trigger one will handle masks and trigger lut) | |
8 | "Physically", only one class will manage both the tracker and the trigger : AliMUONPreprocessor. | |
9 | Depending on the subsystem and on the task to be performed (based on the run type), this class | |
10 | will instanciate the correct set of AliMUONVSubProcessor(s) which does the actual job. | |
11 | Output of most processors will end up in OCDB (Offine Condition DataBase). A set of helper functions | |
12 | to peek at this OCDB are gathered in MUONCDB.C macro. | |
13 | ||
14 | ------- | |
15 | TestMUONPreprocessor.C | |
16 | ------- | |
17 | ||
18 | This is the master macro used to check the MUON part of the Shuttle. | |
19 | Depending on what you want to test, you'll have to modify the input files | |
20 | (using shuttle->AddInputFile) and/or the run type (using shuttle->AddInputRunParameter()) | |
21 | ||
22 | ------- | |
23 | AliMUONPreprocessor(const TString& detName) | |
24 | ------- | |
25 | ||
26 | Depending on how this one is constructed, and depending on the runtype, it will | |
27 | perform differents tasks. Note that for the moment the runtypes are "fake", i.e. | |
28 | put by hand in the TestMUONPreprocessor.C macro, and might not correspond to | |
29 | the final values to be used by the DAQ. | |
30 | ||
31 | detName runType task to be done worker class (AliMUONVSubprocessor child) | |
32 | -------------------------------------------------------------------------------------------------------- | |
33 | MCH PEDESTAL_RUN read ASCII ped files AliMUONPedestalSubprocessor | |
34 | and put them into OCDB | |
35 | ||
36 | MCH GMS read GMS alignment files AliMUONGMSSubprocessor | |
37 | and put them into OCDB | |
38 | ||
39 | MCH PHYSICS read DCS HV values and AliMUONHVSubprocessor | |
40 | put them into OCDB | |
41 | ||
42 | MCH ELECTRONICS_CALIBRATION_RUN read ASCII gain files to be done | |
43 | and put them into OCDB | |
44 | ||
45 | MTR to be defined to be defined to be done | |
46 | ||
47 | ---------- | |
48 | Pedestals | |
49 | ---------- | |
50 | ||
51 | Two options here. You can either use a pre-done set of ASCII pedestals files (generated as | |
52 | explained below for the 2nd option), located at /afs/cern.ch/user/l/laphecet/public/LDC*.ped, | |
53 | or build you own set. | |
54 | ||
55 | We've written an AliMUONPedestalEventGenerator which creates fake pedestal events. The pedestal values | |
56 | are taken from the Offline Condition DataBase (OCDB) (which is itself fakely filled | |
57 | using the writePedestals() function located in the MUONCDB.C macro. | |
58 | ||
59 | So first generate a valid pedestal CDB entry but using the MUONCDB.C macro. | |
60 | ||
61 | root[] .L MUONCDB.C++ | |
62 | root[] const char* cdbpath="local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB"; // where to put the CDB | |
63 | root[] Bool_t defaultValues = kFALSE; // to generate random values instead of plain zeros... | |
64 | root[] Int_t startRun = 80; | |
65 | root[] Int_t endRun = 80; | |
66 | root[] writePedestals(cdbpath, defaultValues, startRun, endRun); | |
67 | ||
68 | Expected output is (don't worry about the warnings, they are harmless) : | |
69 | ||
70 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
71 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
72 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
73 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
74 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
75 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
76 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
77 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
78 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
79 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
80 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
81 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
82 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
83 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
84 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
85 | W-AliMpExMap::AddKey: AliMpExMap::AddKey: resized Key array | |
86 | 16828 Manus and 1064008 channels. | |
87 | Ngenerated = 1064008 | |
88 | ||
89 | Then use the AliMUONPedestalEventGenerator to produce simulated pedestal events. | |
90 | ||
91 | Usage : | |
92 | root[] AliCDBManager::Instance()->SetDefaultStorage(cdbpath); // so you will read | |
93 | // back pedestals values generated in the previous step | |
94 | root[] const char* dateFileName = "raw.date"; // base filename for the output | |
95 | root[] Int_t runNumber = 80; // run number used to fetch the pedestals from the OCDB | |
96 | root[] Int_t nevents = 100; // # of events to generate. 100 should be enough | |
03fa8501 | 97 | root[] gSystem->Load("libMUONshuttle"); |
e661d480 | 98 | root[] AliMUONPedestalEventGenerator ped(runNumber,nevents,dateFileName); |
99 | root[] ped.Exec(""); | |
100 | ||
101 | It *will* take a lot of time (mainly due to the fact that we're writting a | |
102 | bunch of ASCII files = DDL files), so please be patient. | |
103 | ||
104 | The output should be the normal simulated sequence of MUON.Hits.root, MUON.SDigits.root, | |
105 | MUON.Digits.root, raw/*.ddl files and raw.date.LDCi where i=0-3 (i.e. one DATE file | |
106 | per LDC, as will be used in real life), the latter ones being roughly 100 MB each. | |
107 | ||
108 | The raw.date.LDC* files are then processed using the makeped online program | |
109 | (currently found, pending an agreement on where to put online programs under cvs, | |
03fa8501 | 110 | under /afs/cern.ch/user/a/abaldiss/public/v16; Please contact Alberto to check |
e661d480 | 111 | it's the latest version) which outputs manus-*.ped ASCII files (one per LDC) : |
112 | ||
03fa8501 | 113 | makeped -f raw.date.LCDi -a LDCi.ped (i=0,1,2,3) |
e661d480 | 114 | |
115 | (repeat for each LDC) | |
116 | ||
117 | The LDCi.ped files are the input for the pedestal subprocessor, | |
118 | which is tested using the TestMUONPreprocessor.C macro. | |
119 | The output of the pedestal subprocessor (upon success only) is written into the OCDB. | |
120 | Difference between the input and the output can be inferred using the diff() function | |
121 | of MUONCDB.C macro. | |
122 | ||
123 | ||
124 | ------- | |
125 | HV | |
126 | ------- | |
127 | ||
128 | HV DCS values are created in CreateDCSAliasMap() of TestMUONPreprocessor.C | |
129 | You might want to modify this function to create a given set of error conditions | |
130 | in order to test whether the HVSubprocessor is reacting properly to those errors. | |
131 | ||
132 |