]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/READMEshuttle
Fixes to get the HTML documentation from Root
[u/mrichter/AliRoot.git] / MUON / READMEshuttle
CommitLineData
aa9dd72b 1$Id$
2
e661d480 3How to test the Shuttle preprocessor(s) for MUON.
4
5We will get two "logical" MUON preprocessors : one for the tracker and one for the trigger.
6Both 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.
9Depending 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.
11Output of most processors will end up in OCDB (Offine Condition DataBase). A set of helper functions
e66e85b0 12 to peek at this OCDB are gathered in AiMUONCDB class.
e661d480 13
14-------
15TestMUONPreprocessor.C
16-------
17
18This is the master macro used to check the MUON part of the Shuttle.
19Depending 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-------
23AliMUONPreprocessor(const TString& detName)
24-------
25
26Depending 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
31detName runType task to be done worker class (AliMUONVSubprocessor child)
32--------------------------------------------------------------------------------------------------------
33MCH PEDESTAL_RUN read ASCII ped files AliMUONPedestalSubprocessor
34 and put them into OCDB
35
36MCH GMS read GMS alignment files AliMUONGMSSubprocessor
37 and put them into OCDB
38
39MCH PHYSICS read DCS HV values and AliMUONHVSubprocessor
40 put them into OCDB
41
e66e85b0 42MCH ELECTRONICS_CALIBRATION_RUN read ASCII gain files prototype only = AliMUONGainSubprocessor
e661d480 43 and put them into OCDB
44
45MTR to be defined to be defined to be done
46
47----------
48Pedestals
49----------
50
51Two 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
55We've written an AliMUONPedestalEventGenerator which creates fake pedestal events. The pedestal values
56are taken from the Offline Condition DataBase (OCDB) (which is itself fakely filled
e66e85b0 57using the WritePedestals() method of AliMUONCDB class
e661d480 58
f7493b7e 59So first generate a valid pedestal CDB entry by using the AliMUONCDB class
e661d480 60
e661d480 61root[] const char* cdbpath="local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB"; // where to put the CDB
e66e85b0 62root[] AliMUONCDB cdb(cdbpath)
e661d480 63root[] Bool_t defaultValues = kFALSE; // to generate random values instead of plain zeros...
64root[] Int_t startRun = 80;
65root[] Int_t endRun = 80;
e66e85b0 66root[] cdb.WritePedestals(defaultValues, startRun, endRun);
e661d480 67
68Expected output is (don't worry about the warnings, they are harmless) :
69
e66e85b0 70I-AliMUONCDB::ManuList: Generating ManuList...
71I-AliMUONCDB::ManuList: Manu List generated.
72I-AliMUONCDB::MakePedestalStore: 16828 Manus and 1064008 channels.
73I-AliMUONCDB::WritePedestals: Ngenerated = 1064008
74I-AliCDBManager::Init: AliEn classes enabled in Root. AliCDBGrid factory registered.
75I-AliCDBManager::SetDefaultStorage: Setting Default storage to: local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB
76I-AliCDBLocal::PutEntry: CDB object stored into file ($ALICE_ROOT)/SHUTTLE/TestShuttle/TestCDB/MUON/Calib/Pedestals/Run80_80_v0_s0.root
e661d480 77
78Then use the AliMUONPedestalEventGenerator to produce simulated pedestal events.
79
f7493b7e 80Usage (from the Root prompt) :
81AliCDBManager::Instance()->SetDefaultStorage(cdbpath); // so you will read
e661d480 82// back pedestals values generated in the previous step
f7493b7e 83const char* dateFileName = "raw.date"; // base filename for the output
84Int_t runNumber = 80; // run number used to fetch the pedestals from the OCDB
85Int_t nevents = 100; // # of events to generate. 100 should be enough
86gSystem->Load("libMUONshuttle"); // needed or not depending on whether it's already loaded or not
87AliMUONPedestalEventGenerator ped(runNumber,nevents,dateFileName);
88ped.Exec("");
89
90It *will* take a lot of time (mainly due to the fact that we're writing a
e661d480 91bunch of ASCII files = DDL files), so please be patient.
92
93The output should be the normal simulated sequence of MUON.Hits.root, MUON.SDigits.root,
94 MUON.Digits.root, raw/*.ddl files and raw.date.LDCi where i=0-3 (i.e. one DATE file
95per LDC, as will be used in real life), the latter ones being roughly 100 MB each.
96
f7493b7e 97// FIXME : instructions below should be replaced with usage of MUONTRKda
98//
99
e661d480 100The raw.date.LDC* files are then processed using the makeped online program
101(currently found, pending an agreement on where to put online programs under cvs,
03fa8501 102 under /afs/cern.ch/user/a/abaldiss/public/v16; Please contact Alberto to check
e661d480 103 it's the latest version) which outputs manus-*.ped ASCII files (one per LDC) :
104
03fa8501 105 makeped -f raw.date.LCDi -a LDCi.ped (i=0,1,2,3)
e661d480 106
107 (repeat for each LDC)
108
109The LDCi.ped files are the input for the pedestal subprocessor,
110which is tested using the TestMUONPreprocessor.C macro.
111The output of the pedestal subprocessor (upon success only) is written into the OCDB.
112Difference between the input and the output can be inferred using the diff() function
113of MUONCDB.C macro.
114
f7493b7e 115----------
116Gains
117----------
118
119Like pedestals, you have two options here. You can either use a pre-done set of
120ASCII gain files (generated as explained below for the 2nd option),
121located at /afs/cern.ch/user/l/laphecet/public/LDC*.gains, or build you own set.
122
123We've written an AliMUONGainEventGenerator which creates fake gain events.
124The pedestal and gain values are taken from the Offline Condition DataBase (OCDB)
125 (which is itself fakely filled using the WritePedestals() and WriteGains()
126 methods of AliMUONCDB class).
127
128So first you need to generate a valid pedestal CDB entry and a valid gain CDB
129entry by using the AliMUONCDB class, from the Root prompt:
130
131const char* cdbpath="local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB"; // where to put the CDB
132AliMUONCDB cdb(cdbpath)
133Bool_t defaultValues = kFALSE; // to generate random values instead of plain zeros...
134Int_t gainRun = 80;
135Int_t pedRun = 81;
136cdb.WritePedestals(defaultValues, pedRun, pedRun);
137cdb.WriteGains(defaultValues, gainRun, gainRun);
138
139Expected output is (don't worry about the warnings, they are harmless) :
140
141Then use the AliMUONGainEventGenerator to produce simulated gain events : the output
142will be n x 4 date files (n is the number of fake injections, currently 9, and 4
143 is the number of LDCs)
144
145Usage (again, from the Root prompt) :
146
147const char* cdbpath="local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB"; // where to get the CDB
148AliCDBManager::Instance()->SetDefaultStorage(cdbpath); // so you will read
149// back pedestals and gain values generated in the previous step
150const char* dateFileName = "raw.date"; // base filename for the output
151Int_t gainRunNumber = 80; // run number used to fetch gains from OCDB
152Int_t pedRunNumber = 81; // run number used to fetch the pedestals from the OCDB
153// generated ped files will be for r = 81, 83, etc...
154Int_t nevents = 100; // # of events to generate. 100 should be enough for testing, but 1000 would be better for prod
155gSystem->Load("libMUONshuttle"); // needed or not depending on whether it's already loaded or not
156AliMUONGainEventGenerator g(gainRunNumber,pedRunNumber,nevents,dateFileName);
157g.Exec("");
158
159It *will* take a lot of time (mainly due to the fact that we're writing a
160bunch of ASCII files = DDL files), so please be patient.
161
162The output should be a sequence of directories, RUN81, RUN82, etc..., each
163containing the normal simulated sequence of MUON.Hits.root, MUON.SDigits.root,
164 MUON.Digits.root, raw/*.ddl files and raw.date.LDCi where i=0-3 (i.e. one DATE file
165per LDC, as will be used in real life), the latter ones being roughly 100 MB each.
166
167// FIXME
168// Below should follow instructions on how to feed the MUONTRKda with the
169// generated files.
e661d480 170
171-------
172HV
173-------
174
175HV DCS values are created in CreateDCSAliasMap() of TestMUONPreprocessor.C
176You might want to modify this function to create a given set of error conditions
177 in order to test whether the HVSubprocessor is reacting properly to those errors.
ee9324d3 178
179-------
180GMS
181-------
182
183The GMS alignment data for testing can be generated with
184the macro MUONGenerateTestGMS.C:
185The matrices of TGeoHMatrix type, with TObject::fUniqueID equal to the geometry
186module Id, are put in a TClonesArray and saved in the Root file with a
187key "GMSarray".
e661d480 188