Fixed bug with half-and-half v0s identified as whole ones in MC, made better histograms of (most) cut variables, renamed histograms, added histograms for direct comparison between MC and data
Now, we use the reconstructor
to properly pedestal subtract and gain calibrate the
signals. This allows us - since the signals are now on
the same footing - to fit a function the summed spectra.
The fit function used is a Landau convolved with a Gaussian.
The quality is set based on chi^2/nu of the fits, as well
as the relative errors of the fit parameters. Both pieces
of information is shown on the plots by adding TLatex
objects to the TH1::fListOfFunctions. The color of the
function line reflects the quality (green: good, orange:
problem, red: bad).
Also, the average number of read-out errors per sub-detector
FMD1, 2, and 3 are computed and the quality set based on this
number. The means are shown on the plot together with the
used thresholds. Again, the color of the text reflects the
quality.
In all cases, the quality of the individual plots are set on
the objects themselves in the member TObject::fUniqueID. This
can then be retrieved by a Amore agent script to set the quality
of the individual objects in the Amore environment. This script
is simple and looks like
// -*- mode: C++ -*-
#include <map>
void
FMDshifterQuality(TObjArray* objs, map<string,int>* map)
{
for (Int_t i = 0; i < objs->GetEntriesFast(); i++) {
TObject* o = objs->At(i);
if (!o) continue;
// Printf("Setting quality of %s to %d", o->GetName(), o->GetUniqueID());
std::string s(o->GetName());
(*map)[s] = o->GetUniqueID();
}
}
This should be added to the AMORE database at P2, and the fmd.configfile
should look like
# QA species definition. Options: [default] [calib] [low] [high] [cosmic]
qa_species default calib low high cosmic
# Low cut for fitting energy loss specrta
ELossLowCut 0.3
# Number of RMS to fit beyound maximum
ELossNRMS 2.
# Cut on chi^2/nu of fit for bad value
ELossBadChi2Nu 100.
# Cut on chi^2/nu of fit for f**ked up value
ELossFkupChi2Nu 200.
# Least number of entries before fitting
ELossMinEntries 10000.
# Cut on average number of R/O errors per detector
ROErrorsBad 0.31
# Cut on average number of R/O errors per detector
ROErrorsFkup 0.51
The AliFMDQAChecker now also properly uses the QA thresholds from
the P2 environment by querying the (specific) CDB storage. To set
this up, a QAThresholds.configfile should be added for the FMD detector
with the content:
#
# Thresholds for the FMD
#
# Cut on chi^2/nu of fit for bad value
ELossBadChi2Nu D 100.
# Cut on chi^2/nu of fit for f**ked up value
ELossFkupChi2Nu D 200
# Cut on parameter relative error
ELossGoodParError D 0.1
# Cut on average number of R/O errors per detector
ROErrorsBad D 0.31
# Cut on average number of R/O errors per detector
ROErrorsFkup D 0.51
#
# EOF
#
The revision should eventually be ported to the release, but
I'd like to do some more checks when I'm back from vacation.
- support compilation with GCC 4.1 and 4.2
- add TARGET_ARCHITECTURE=none where no flags will be added
- change TARGET_ARCHITECTURE default to none for AliRoot
From Theodor Rascanu: These changes are necessary since we need to have the code in aliroot for the approval of our heavy flavour electron v2 analysis note: https://aliceinfo.cern.ch/Notes/node/92
Using a conservative 3% estimate for the K0s signal extraction systematics. Using explicit names for the files with the final spectra. Drawing the BGBW fitting curves on top of lin-scale spectra.
Added possibility to collect input file information from the analysis manager, via mgr->SetCollectThroughput(kTRUE). To dump the info in a file, one can call just: mgr->SetFileInfoLog(fileinfo.log). Will start working with files in alien starting with root v5-34-00a.
- Use TParameter<T> for storing parameters of the
analysis rather than TNamed. TNamed cannot be
merged which results in a huge overhead of
objects and time when merging containers with
objects of that class. TParameter<T> can be
merged and should not imply this overhead.
- Fix memory leak and very inefficient and wrong code when
inspecting the trigger words in AliFMDEventInspector.
- The previous code (by Alexander) tokenized every
defined trigger class (from the physiscs selection)
on every event, but the returned TObjArray was never
free'd - which causes a memory leak.
- The code was wrong, because the trigger classes
where only tokenized to get the positive and
negative parts, and then the found trigger word
was compared the positive part. However, the
positive part can consist of many words
(separated by commas) and so the comparison
would always fail.
- The code was inefficient, since the classes
where inspected on each event. Since the
trigger classes are constant over a run,
it is much more efficient to cache the
positive words up front (on the first event
say).
The new implementation caches the positive
words for both collision and background triggers
on the first event. For each event, we then
loop over these cached words and compare those
to the found trigger word of the event. In this
way, we only tokenize the trigger classes once
(actually, twice per class - one to get the
positive list, one to get the individual words)
and we make sure we clean up the memory. In each
event we can do simple comparisons (using the
AliESDEvent supplied methods), and thereby
speed up the code. We also avoid hidden memory
leaks and overly many allocations this way.
- Other clean up in the event inspector, so that all
MC specific stuff is done in the derived class
AliFMDMCEventInspector.
- Code in the event inspector has been re-factored
into separate member functions for clear structure
and easier maintaince.
- Debug statements added in various places to help
identify problems (conditional on verbosity level
of AliAnalysisManager)
- AliDisplacedVertexSelection had duplicate code
in the member functions for the vertex and
centrality. This has been unified into a
single member function Process that should be
called early in each event. This will set
internal member variables which can be retrieved
using GetVertexZ and GetCentralityPercentile.
IMPORTANT CHANGE FOR SATELITTE EVENT ANALYSIS:
The AliFMDEventInspector when run over MC no
longer tries to subsitute the IP z coordinate
and centrality with information directly from
the simulation. Instead, this information is
available from the
AliFMDMCEventInspector::ProcessMC member function.
The train setup can now find the available packages
(ROOT,AliROOT) by it self. Passing the value
"last" to the options --aliroot and --root will
select the last possible version(s). If the value
"list" is passed, then a list of available packages
will be displayed and the execution stopped.
Also set default values on options in case of
--help is passed.
From M.Fasel: small patch for the TRD. It adds one Getter function to the AliVTrack and AliAODtrack, which is implemented in AliAODpid. The getter function is the same for ESD and AOD tracks.