New README files extracted from README
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Jul 2007 10:07:43 +0000 (10:07 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Jul 2007 10:07:43 +0000 (10:07 +0000)
(Gines)

MUON/READMEcalib [new file with mode: 0644]
MUON/READMEevaluation [new file with mode: 0644]
MUON/READMEraw [new file with mode: 0644]
MUON/READMEtrigger [new file with mode: 0644]

diff --git a/MUON/READMEcalib b/MUON/READMEcalib
new file mode 100644 (file)
index 0000000..ee50941
--- /dev/null
@@ -0,0 +1,93 @@
+$Id$
+
+The Offline Condition DataBase is described extensively on ALICE Offline pages.
+
+Here you'll find only information relevant to the AliMUONCDB class
+ (formerly MUONCDB.C macro), which defines a set of functions to read/write 
+ MUON information to this CDB. Those functions are not meant to be used 
+ as black boxes.
+Please have a closer look before using (especially the ones writing to the CDB...)
+-------
+Calibration data objects
+-------
+
+We've designed generic data containers to store calibration information, 
+tailored to the way we usually access MUON tracker data, that is, 
+indexed by the pair (detElemId,manuId). 
+This container is called AliMUONV2DStore. You can attach a TObject to every and
+each pair (detElemId,manuId).
+For the moment, that TObject is generally of AliMUONVCalibParam type, 
+ which handles a given number of channels (64 typically) as a group. 
+There's also an AliMUONV1DStore for data types which only requires indexing 
+by 1 value (like trigger masks for instance).
+As the class names suggest (V...), those classes are only interfaces. 
+Concrete ones are AliMUON2DMap (used instead of a vector as detElemId are 
+not contiguous) for the V2DStore, AliMUON1DArray (for things where indices are
+contiguous) and AliMUON1DMap for the V1DStore, and CalibParamNI (VCalibParam 
+storing n integer per channel), and CalibParamNF 
+(VCalibParam storing n floats per channel).
+
+One exception are the HV values from DCS, which are stored "as they come" from 
+the shuttle-dcs interface, as a TMap, where the key is the aliasname (TString), 
+and the value a TObjArray of AliDCSValue.
+
+For trigger, the same virtual container idea applies, 
+except we're using 1D container (AliMUONV1DStore, for masks) or specific ones (for LUT
+and efficiency)
+
+--------
+CDB location
+--------
+
+One very important notion is that of the DefaultStorage (which you might set with 
+ AliCDBManager::Instance()->SetDefaultStorage(path)), which tells the CDB library where
+ the CDB is sitting (either locally on disk, or on the grid).
+
+For local tests, path will be most likely = local://$ALICE_ROOT/MUON 
+(i.e. there is, in CVS a slim version of the calibration objects needed
+  for running the MUON code), or local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB for Shuttle testing.
+-------
+Writing to CDB
+-------
+AliMUONCDB class is used to populate the CDB with fake calibration objects for testing purposes.
+Real calibration data will normally be handled by the Shuttle (see READMEshuttle).
+
+The various WriteXXX() methods may be used to populate MUON tracker and trigger 
+information.
+A full set of calibration data types can be created from scratch using, from
+the Root prompt (from within the $ALICE_ROOT/MUON directory to get the correct
+list of libraries loaded by the loadlibs.C macro)
+
+root[0] AliMUONCDB cdb;
+root[1] Int_t startRun = 0;
+root[2] Bool_t defaultValues = kTRUE;
+root[3] cdb.WriteTrigger(startRun);
+root[4] cdb.WriteTracker(defaultValues,startRun);
+
+------
+Reading the CDB
+------
+The actual reading is encapsulated into AliMUONCalibrationData class. 
+e.g. to read pedestals for run 4567, one would do :
+
+AliCDBManager::Instance()->SetDefaultStorage(cdbPath);
+AliMUONCalibrationData cd(4567);
+AliMUONV2DStore* ped = cd.Pedestals();
+
+If you want to plot calibration data (not terribly usefull as it's a really global view),
+ use the Plot() function of AliMUONCDB, e.g.  
+AliMUONCDB cdb(cdbpath);
+cdb.Plot(*ped,"pedestal")
+
+which will create 2 histograms : pedestal_0 (mean) and pedestal_1 (sigma).
+
+You might also be interested in the AliMUONStoreHelper::Diff() method 
+which generates an AliMUONV2DStore containing the difference 
+(either absolute or relative) of two AliMUONV2DStore.
+
+
diff --git a/MUON/READMEevaluation b/MUON/READMEevaluation
new file mode 100644 (file)
index 0000000..a465258
--- /dev/null
@@ -0,0 +1,63 @@
+============================================================
+ How to run MUONRecoCheck macro
+============================================================
+
+To check the muon reconstruction by comparing the reconstructed tracks
+with the reference tracks made of "AliTrackReference" for the hits in chamber (0..9)
+and kinematic informations (TreeK) for the vertex.
+This macro can be used to check the track reconstruction e.g. efficiency,
+momentum resolution ... but also to make physics analysis whenever
+track identification is needed.   
+
+To compile MUONRecoCheck.C
+.includepath $ALICE_ROOT/STEER
+.includepath $ALICE_ROOT/MUON
+.L $ALICE_ROOT/MUON/MUONRecoCheck.C+
+
+// To run MUONRecoCheck
+MUONRecoCheck(nEvent,"geometry.root", "galice.root"); // nEvent = nb of events
+
+
+==========================================================
+Macros for MC studies
+==========================================================
+
+For MC studies the classes "AliMUONTrackLight" and "AliMUONPairLight" can be 
+used in order to fill not only the single muon / dimuon's kinematics (charge, 
+pT, rapidity, etc) at the generation AND reconstruction level, but also for 
+"decoding" the Pythia output and for the storing of the single muon's history. 
+This allows to tag if two muons of a given event come from a certain, well-defined 
+process, such as J/psi, Upsilons, correlated open charm or open beauty or the 
+low masses or if they are of uncorrelated origin. For open beauty/charm it also 
+tags the creation process (pair creation, flavour excitation or gluon splitting). 
+The classes also allow to tag feed-down or neutral B meson oscillation and 
+has a method that checks whether the reconstructed track is a muon or not.
+
+The macros ReadRecoCocktail.C, DecodeRecoCocktail.C and MergeMuonLight.C 
+are examples how to use these two classes. DecodeRecoCocktail.C opens the 
+generated files, loops over the events and fills an AliMUONTrackLight object 
+for every reconstructed track for which the reference to its generated particle 
+could be established, using the AliMUONRecoCheck class. 
+It then takes the AliMUONTrackLight objects and forms - event by event - 
+AliMUONPairLight objects, on a combinatorial basis. For a given event these 
+objects are stored in respective TClonesArrays which are then stored in a tree. 
+By default, the produced output file is called "MuonLight.root". 
+This root file can then be taken by the macro "ReadRecoCocktail.C" that shows, 
+on the example of the reconstructed mass and pT of the AliMUONPairLight object,
+how to access the available information. For large statistics, in which many 
+individual MuonLight.root files are produced, MergeMuonLight.C can be used 
+to merge the files and produce one common output root file.
+
+To read a generation/reconstrution from PDC06 preproduction, and write a file 
+with a tree of AliMUONTrackLight / AliMUONPairLight :
+go to the directory containing the generation/reconstruction. From there run
+aliroot
+.L DecodeRecoCocktail.C+
+DecodeRecoCocktail();
+.q
+
+To read the file previously generated:
+aliroot
+.L ReadRecoCocktail.C+
+ReadRecoCocktail();
+.q
diff --git a/MUON/READMEraw b/MUON/READMEraw
new file mode 100644 (file)
index 0000000..38bbdd9
--- /dev/null
@@ -0,0 +1,26 @@
+============================================================
+ How to read & decode raw data 
+============================================================
+These macros can read & decode DDL files, root and DATE files.
+Nevertheless for the two latter, aliroot has to be compiled with DATE.
+
+For tracker raw data
+.includepath $ALICE_ROOT/STEER
+.includepath $ALICE_ROOT/MUON
+.includepath $ALICE_ROOT/RAW
+.L $ALICE_ROOT/MUON/MUONRawStreamTracker.C+
+MUONRawStreamTracker(maxEvent, firstDDL, lastDDL, rawFileName)
+
+For trigger raw data
+.includepath $ALICE_ROOT/STEER
+.includepath $ALICE_ROOT/MUON
+.includepath $ALICE_ROOT/RAW
+.L $ALICE_ROOT/MUON/MUONRawStreamTrigger.C+ 
+MUONRawStreamTrigger(maxEvent, firstDDL, lastDDL, rawFileName)
+
+Default wise the macro read all DDL files from the current directory for 1000 events.
+For root file rawFileName must end with .root, for date file rawFileName 
+must be no extention. For DDL files you have to specified the directory 
+where the raw0...n subdirectories are located:
+MUONRawStreamTracker(maxEvent, "$YOUR_WORKING_DIRECTORY/"); //Do not forget the slash at the end!
+
diff --git a/MUON/READMEtrigger b/MUON/READMEtrigger
new file mode 100644 (file)
index 0000000..66cf6af
--- /dev/null
@@ -0,0 +1,161 @@
+
+===========================================================
+ How to reprocess trigger decision from already produced digits
+===========================================================
+The MUONTrigger.C macro can be used to check the trigger algorithm w/o 
+having to (re-)perform simulation and digitalization. 
+It loads the digits, erase TreeR and store the current trigger output in 
+TreeR.
+The different trigger outputs can be compared by looking at the GLT branch 
+of TreeD (filled during simulation) and the TC branch of TreeR (filled from 
+a copy of TreeD during reconstruction or with this macro).
+Note: rec points from tracking chamber will be lost.
+Usage:
+root [0] .L $ALICE_ROOT/MUON/MUONTrigger.C+
+root [1] MUONTrigger()
+
+
+===========================================================
+OFFLINE trigger GUI data quality and debugging tool
+===========================================================
+- read digits and local trigger decision from simulated/real data
+- display
+- reprocess trigger decision inside AliRoot
+- set x/y strips interactively on boards and transfer them to the AliRoot
+  TriggerElectronics, execute trigger algorithm and recover the local trigger
+  decision
+
+Classes: *TriggerGUI* 
+
+Library: evaluation
+
+Run
+---
+
+aliroot
+new AliMUONTriggerGUI()
+
+Main window
+-----------
+
+"Map of the local boards as seen from the I.P."
+
+the main window is position sensitive (after file initialization) and it is 
+possible to open a GUI for a circuit.
+
+By menus:
+
+File
+----
+
+Run     - open a file and start with a given event number
+          takes the full path <path>/galice.root
+
+Control - navigate in the tree with events
+
+Exit    - exit the main application
+
+Maps
+----
+
+Digits map   - graphical map with digits in the four chambers, MT11 ... MT22
+
+Chambers digit maps window
+--------------------------
+
+Update - update the map after:
+             - loading of another event
+             - changing interactively the strip signals in boards GUI
+
+Circuit
+-------
+
+Open   - open a board GUI by circuit number
+
+Trigger
+-------
+
+Trigger DSET  - (re)run the trigger algorithm
+
+Circuit GUI window
+------------------
+
+- visualize x/y strips
+- "Set/unset" x (or) y strips
+- "Digits" create board digits from the actual configuration created in the GUI
+- "Reset" reset modification on strips done interactively
+
+Bogdan Vulpescu
+vulpescu@clermont.in2p3.fr
+
+1 June 2007
+
+===========================================================
+ How to check integrated trigger efficiency
+===========================================================
+The MUONTriggerEfficiency.C macro (included in the check scripts) calculates
+the trigger efficiency for the 2 pt cuts. 
+The output is stored in MUONTriggerEfficiency.out file.
+Usage:
+root [0] .L $ALICE_ROOT/MUON/MUONTriggerEfficiency.C+
+root [1] MUONTriggerEfficiency()
+For the CVS default version of the trigger LUT (i.e. lutAptLpt1Hpt1p7.root),
+The reference for J/psi and Upsilon is as below
+ For 1000 Jpsi events with:
+    AliGenParam *gener = new AliGenParam(1, AliGenMUONlib::kJpsi);
+    gener->SetMomentumRange(0,999);
+    gener->SetPtRange(0,100.);
+    gener->SetPhiRange(0., 360.);
+    gener->SetCutOnChild(1);
+    gener->SetChildPhiRange(0.,360.);
+    gener->SetChildThetaRange(171.0,178.0);
+    gener->SetOrigin(0,0,0);          
+    gener->SetForceDecay(kDiMuon);
+    gener->SetTrackingFlag(1);
+ the output should be 
+  Efficiency Lpt cut = 0.7362 +/- 0.0391
+  Efficiency Hpt cut = 0.2662 +/- 0.0201
+ Similarly, for 1000 Upsilon events, the output should be
+  Efficiency Lpt cut = 0.9806 +/- 0.0457
+  Efficiency Hpt cut = 0.9537 +/- 0.0448
+
+===========================================================
+ How to check single muon trigger efficiency versus pt
+===========================================================
+The MUONTriggerEfficiencyPt.C macro produces trigger single muon efficiency 
+versus pt plots for the 2 pt cuts. 
+Results are compared to the reference (red curves).   
+To be used with (at least) 10000 events as follows
+   AliGenBox * gener = new AliGenBox(1);
+   gener->SetPtRange(0.,10.);
+   gener->SetPhiRange(0., 360.);         
+   gener->SetThetaRange(171.000,178.001);
+   gener->SetPart(13);           // or -13
+   gener->SetOrigin(0.,0., 0.);  
+   gener->SetSigma(0.0, 0.0, 0.0);     
+Outputs are stored in MUONTriggerEfficiencyPt.gif/eps/out files
+Important note: this macro works with one (real) muon track per event only
+Usage:
+root [0] .L $ALICE_ROOT/MUON/MUONTriggerEfficiencyPt.C+
+root [1] MUONTriggerEfficiencyPt()
+
+===========================================================
+ How to get trigger chamber efficiency from data
+===========================================================
+Trigger chamber efficiency map is calculated during reconstruction and saved in AliESDs.root
+In order to view and save the map, use macro MUONTriggerChamberEfficiency.C
+
+To compile MUONTriggerChamberEfficiency.C
+.includepath $ALICE_ROOT/MUON
+.L $ALICE_ROOT/MUON/MUONTriggerChamberEfficiency.C+
+
+// To run MUONTriggerChamberEfficiency.C
+MUONTriggerChamberEfficiency();
+
+//If you want to make the calculated map available for next simulation use option kTRUE, i.e.
+MUONTriggerChamberEfficiency(kTRUE);
+
+When running next simulation, please remember to activate trigger efficiency
+by adding in Config.C:
+MUON->SetTriggerEffCells(1);
+