o add Reset function to CalPad and CalROC o Add functionality to AliTPCdataQA - Reset...
[u/mrichter/AliRoot.git] / MUON / READMEcalib.txt
1 // $Id$
2
3 /*! 
4
5 \page README_calib Calibration
6  
7  
8 The Offline Condition DataBase is described extensively on ALICE Offline pages.
9
10 Here you'll find mainly information relevant to the MUON objects in the OCDB,
11 and to the AliMUONCDB class (formerly MUONCDB.C macro), which defines a set of functions to read/write 
12  MUON information to this CDB. Those functions are not meant to be used 
13  as black boxes.
14
15 Please have a closer look before using (especially the ones writing to the CDB...)
16
17 \section calib_s0 MUON objects in OCDB
18  
19 <table>
20 <tr><td>OCDB path</td><td>Subsystem</td><td>Run Type</td><td>FileID</td><td>DAQsource</td><td>Update frequency</td><td>Appox. Size</td></tr>
21 <tr><td>MUON/Calib/RecoParam</td><td>both</td><td>N/A</td><td>N/A</td><td>N/A</td><td>Few per year ?</td><td>5 KB</td></tr>
22 <tr><td>MUON/Calib/MappingData</td><td>both</td><td>N/A</td><td>N/A</td><td>N/A</td><td>Once for all once debugged</td><td>1 MB</td></tr>
23 <tr><td>MUON/Calib/MappingRunData</td><td>both</td><td>N/A</td><td>N/A</td><td>N/A</td><td>Between zero and few per year</td><td>100 KB</td></tr>
24
25 <tr><td>MUON/Calib/Capacitances</td><td>MCH</td><td>N/A</td><td>N/A</td><td>N/A</td><td>Once for all once debugged</td><td>7 MB</td></tr>
26 <tr><td>MUON/Calib/Gains</td><td>MCH</td><td>CALIBRATION</td><td>GAINS</td><td>LDC</td><td>Once per calibration run</td><td>10 MB</td></tr>
27 <tr><td>MUON/Calib/HV</td><td>MCH</td><td>PHYSICS</td><td>N/A</td><td>N/A</td><td>Once per physics run</td><td>Depends on the number of trips, 10-20 KB normally</td></tr>
28 <tr><td>MUON/Calib/Neighbours</td><td>MCH</td><td>N/A</td><td>N/A</td><td>N/A</td><td>As MappingData</td><td>10 MB</td></tr>
29 <tr><td>MUON/Calib/OccupancyMap</td><td>MCH</td><td>PHYSICS</td><td>OCCUPANCY</td><td>MON</td><td>Once per physics run</td><td>Depends on the number of bad manus, normally 100-200 KB</td></tr>
30 <tr><td>MUON/Calib/Pedestals</td><td>MCH</td><td>PEDESTAL</td><td>PEDESTALS</td><td>LDC</td><td>Once per pedestal run</td><td>7 MB</td></tr>
31 <tr><td>MUON/Calib/RejectList</td><td>MCH</td><td>N/A</td><td>N/A</td><td>N/A</td><td>Few per year</td><td>Depends on the number of bad elements</td></tr>
32
33 <tr><td>MUON/Calib/GlobalTriggerCrateConfig</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
34 <tr><td>MUON/Calib/LocalTriggerBoardMasks</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
35 <tr><td>MUON/Calib/RegionalTriggerConfig</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
36 <tr><td>MUON/Calib/TriggerDCS</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
37 <tr><td>MUON/Calib/TriggerEfficiency</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
38 <tr><td>MUON/Calib/TriggerLut</td><td>MTR</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr>
39 </table>
40
41 In addition, the following ones were used in the past, but have been discontinued (but are still present in the OCDB, as object removal is not allowed).
42
43 <table>
44 <tr><td>OCDB path</td></tr>
45 <tr><td>MUON/Calib/DDLStore</td></tr>
46 <tr><td>MUON/CalibGlobalTriggerBoardMasks/</td></tr>
47 <tr><td>MUON/Calib/Mapping</td></tr>
48 <tr><td>MUON/Calib/RegionalTriggerBoardMasks</td></tr>
49 <tr><td>MUON/Calib/RegionalTriggerConfig?</td></tr>
50 </table>
51
52 \section calib_s1 Calibration data object classes
53
54 We've designed generic data containers to store calibration information, 
55 tailored to the way we usually access MUON tracker data, that is, 
56 indexed by the pair (detElemId,manuId). 
57 This container is called AliMUONVStore. You can attach a TObject to every and
58 each pair (detElemId,manuId).
59
60 For the moment, that TObject is generally of AliMUONVCalibParam type, 
61  which handles a given number of channels (64 typically) as a group. 
62 There's also 1D versions of AliMUONVStore for data types which only requires indexing 
63 by 1 value (like trigger masks for instance).
64
65 As the class names suggest (V...), those classes are only interfaces. 
66 Concrete ones are AliMUON2DMap (used instead of a vector as detElemId are 
67 not contiguous), AliMUON1DArray (for things where indices are
68 contiguous) and AliMUON1DMap, and CalibParamNI (VCalibParam 
69 storing n integer per channel), CalibParamNF 
70 (VCalibParam storing n floats per channel), and CalibParamND (VCalibParam storing n doubles per channel).
71
72 One exception are the HV values from DCS, which are stored "as they come" from 
73 the shuttle-dcs interface, as a TMap, where the key is the aliasname (TString), 
74 and the value a TObjArray of AliDCSValue.
75
76 \section calib_s2 CDB location
77
78 One very important notion is that of the DefaultStorage (which you might set with 
79  AliCDBManager::Instance()->SetDefaultStorage(path)), which tells the CDB library where
80  the CDB is sitting (either locally on disk, or on the grid).
81
82 For local tests, path will be most likely = <code> "local://$ALICE_ROOT/OCDB"</code>
83 (i.e. there is, in svn a slim version of the calibration objects needed
84 for running the MUON code), or <code> "local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB </code>
85 for Shuttle testing.
86
87 When using alien, the path definition can be eg.
88 <code> "alien://folder=/alice/data/2009/OCDB" </code>. 
89  
90 \section calib_s3 Writing to CDB
91  
92 AliMUONCDB class is used to populate the CDB with fake calibration objects for testing purposes.
93 Real calibration data will normally be handled by the Shuttle (see READMEshuttle).
94
95 The various WriteXXX() static methods may be used to populate MUON tracker and trigger 
96 information.
97 A full set of calibration data types can be created from scratch using, from
98 the Root prompt (from within the $ALICE_ROOT/MUON directory to get the correct
99 list of libraries loaded by the loadlibs.C macro)
100
101 <pre>
102 root[0] AliMpCDB::LoadAll2(); 
103 root[1] Int_t startRun = 0;
104 root[2] Bool_t defaultValues = kTRUE;
105 root[3] AliMUONCDB::WriteTrigger(startRun);
106 root[4] AliMUONCDB::WriteTracker(defaultValues,startRun);
107 </pre>
108
109
110 \section calib_s4 Reading the CDB
111  
112 The actual reading is encapsulated into AliMUONCalibrationData class. 
113 e.g. to read pedestals for run 67138, one would do :
114
115 <pre>
116 AliCDBManager::Instance()->SetDefaultStorage(cdbPath);
117 AliMUONVStore* ped = AliMUONCalibrationData::CreatePedestals(67138);
118 </pre>
119
120 If you want to plot calibration data (not terribly usefull as it's a really global view),
121  use the Plot() function of AliMUONCDB (this require to load the segmentation), e.g.  
122  
123 <pre>
124 AliCDBManager::Instance()->SetRun(0);
125 AliMUONCDB::LoadMapping(kTRUE);
126 AliMUONCDB::Plot(*ped,"pedestal");
127 </pre>
128
129 which will create 2 histograms : pedestal_0 (mean) and pedestal_1 (sigma).
130
131 A more usefull way to look at calibration data might be the \link README_mchview mchview \endlink program.
132
133 \section calib_s5 A note on status and status map
134
135 A special kind of object is the status map. It would deserve a full documentation
136  (and that will need to be done some day), but for the moment, please have a look
137  at the MUONStatusMap.C macro which can let you play with it. For more information,
138  have a look at the AliMUONPadStatusMaker and AliMUONPadStatusMapMaker.
139
140  $Id$
141
142 */
143