Major upgrade to the package, in order to speed-up the execution and remove some unnecessary features which complicate too much the preparation of configuration.
Added some new cuts used for current analysis, and some monitor analysis task in order to check some quality cuts to tune them properly.
AliRsnDaughter:
- added a TLorentzVector datamember which will contain all kinematic informations
(one for default input and another for MC if necessary)
>> removed most of the kinematic-like getters
>> access to kinematics of the track through the getter which returns this object
>> eases a lot the procedure of summing up without errors
NOTE: now the AliRsnDaughter should be able to deal also with V0s, in order to
search for *charged* resonances (this is under test, but it is basically implemented)
AliRsnPairParticle --> renamed into AliRsnMother
- added two TLorentzVector which are set from two AliRsnDaughters and two masses
assigned to them
The AliRsnCutManager (renamed class) has been reviewes as follows:
- removed the slot related to cuts on events, because it is redundant
if repeated on all AliRsnPair objects, it has been moved at the level
of the AnalysisManager
- added the possibility to specify some cuts only for the first or second daughter
so there are three different slots: common (checked for both), first and second (checked for one only)
AliRsnFunctionAxis was renamed as AliRsnValue for meaning reasons.
AliRsn Analysis tasks will contain only one analysis manager,
since the use of them in the train (which should be the default)
stores all outputs into a single file, so there is no reason to have
different analysis manager, which cause confusion when configuring the task.
AliRsnPair becam a virtual base classe for different output systems
the 'old' version which stores histograms is now AliRsnPairFunctions, and works like before.
A new possibility was added to save output as a TNtuple, with the class AliRsnPairNtuple,
which needs to be initialized just defining what values it has to store for each entry,
which are defined using the same class AliRsnValue which is used to create the AliRsnFunctions
which are used as the output for the previous version of this class.
There is the possibility to implement new output formats using this base class.
REMOVED CLASSES:
- AliRsnVManager (not needed any longer)
- AliRsnHistoDef (obsolete, not used since long time)
- AliRsnPairManager (unnecessary step more in configuration)
- AliRsnPIDDefESD (replaced by a dedicated AliRsnCut for PID)
- AliRsnAnalysisTrackEffSE (never used)
- AliRsnCutESDTrigger (better to use AliPhysicsSelection)
(Christian Klein-Boesing) This would allow to enable the population of the AOD by the ESDFilter without activating the writing. By that subsequent tasks can decide wether the standard AOD is filled or not, in case the user wants it.
AOD filling follows the new offline trigger schema. The method AliAODHandler::BeginEvent() resets filling of the AOD for the current event, while the ESD/AOD filters may set it back if the event passes their physics selection mask.
All filters must add to their UserExec mehod lines like:
// Filters must explicitely enable AOD filling in their UserExec (AG)
if (!AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()) AliFatal("Cannot run ESD filter without an output event handler");
AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
Note:
Changed the logic of AliAnalysisTaskSE::fOfflineTrigger for backward compatibility: if the task does not set it (stays 0) it means all events are selected. If the mask is non 0 it is AND-ed with the current event mask (as implemented with Jan-Fiete).
Again, if no event selection cuts object (like AliPhysicsSelection) is used at the level of the input handler, all events are now selected.
Implemented merging in stages. Instead of submitting one merging job per master, the plugin now sends nfiles/nperchunk+1 jobs, each merging a subset of nperchunk files.
The number of files merged in a chunk is the one set via: plugin->SetMaxMergeFiles(nperchunk)
This works only when having the plugin in SetMergeViaJDL() mode. Running the analysis with the plugin in in "terminate" mode will submit merging at stage 1. When the submitted merging jobs are in a final state, the user can rerun in "terminate" mode. This will either resubmit the jobs that failed in the previous stage or just submit jobs for the next stage.
When the current stage fulfills nfiles_for_stage_N <= nperchunk, the final merging job will also run the analysis in "terminate" mode.
The intermediate files are calles: output-Stage%02d_%04d and are NOT cleaned up in the current implementation - the user should do it.
Note: Do NOT run "terminate" mode if existing merging jobs are not yet in a final state, as this will resubmit ALL jobs that have not yet registered their output, even if these are successful.
Run scenario:
1. Analysis via plugin using:
plugin->SetMergeViaJDL();
plugin->SetMaxMergeFiles(10);
plugin->SetRunMode("full")
...
mgr->StartAnalysis("grid")
This will submit a master job which is split say in 1000 jobs, each producing output1.root, ..., outputN.root
2. All jobs finished (maybe after resubmission) even if some failed (due to corrupted inputs or whatever)
We are left with 980 successful jobs.
plugin->SetRunMode("terminate")
...
mgr->StartAnalysis("grid")
This will submit 980/10 meging jobs. The K-th job will produce for the output N the file: output-Stage01_000K.root
Wait until jobs are done, resubmit failing ones -> ALL merging jobs must succeed
3. We have now 98 Stage01 merged files. Redoing step 2 will submit 98/10+1=10 jobs stage 2.
These will produce 10 files outputN-Stage02_000K.root
4. Redoing stage 2 when these jobs finished, the plugin will submit finally a single merging job.
After merging, the job will run the analysis "terminate" phase.
marian [Wed, 28 Jul 2010 10:50:58 +0000 (10:50 +0000)]
Update for extraction of 3D cluster residual maps
- A lot of code in the AliTPCcaliAlign started to be obsolete
- To be cleaned later
+
MakeAlignCalPad.C - for E field distortion in 3D
- previously working in 2D
- name is obsolete - will be replaced in future
ivana [Tue, 27 Jul 2010 07:58:30 +0000 (07:58 +0000)]
In MUONTriggerChamberEfficiency.C:
Former const char * arguments are now TString objects. This is why it is very common to build a const char * using the Form() function, such as Form("local://%s/OCDB", gSystem->pwd()), but this function points to a static circular buffer, that may be eventually overwritten between the Form() call and the const char * usage, leading to unexpected results. By using TString, we make sure that the buffer is safely copied before being overwritten.
(Dario Berzano)
marian [Mon, 26 Jul 2010 20:11:46 +0000 (20:11 +0000)]
// AliTPCExBEffectiveSector class //
// Correct for the rest of ExB effect which are not covered yet by physical models
//
// Motivation:
// ExB correction:
// dr = c0* integral(Er/Ez) + c1* integral(Erphi/Ez)
// drphi = -c1* integral(Er/Ez) + c0* integral(Erphi/Ez)
// Where:
// wt = Bz*(k*vdrift/E) ~ 0.3 at B=0.5 T
// c0 = 1/(1+T2*T2*wt*wt)
// c1 = T1*wt/(1+T1*T1*wt*wt)
//
//
// 3 correction maps 0 implemented as histogram used
// R-Phi correction map obtained minimizing residuals betwee the track
// and space points (AliTPCcalibAlign class). Track is defined using
// the points from the refernce plain at the middle of the TPC
// and vertex
// Corrected primar tracks straight pointing to the primary vertex
//
// R distortion - obtained using the cluster residuals in the setup with
// plus and minus field
// Only high momenta tracks used for this calibration (1 GeV threshold)
// drphi_plus-drphi_minus=-2*c1 integral(Er/Ez)
// - Erphi/Ez cancels
ivana [Mon, 26 Jul 2010 16:19:26 +0000 (16:19 +0000)]
Fixing Raw2SDigits:
- Added loading mapping in AliMUONDigitMaker ctor
- Added treeS->Fill() in AliMUON::Raw2SDigits (the written files were empty)
This fixes the Savannah bug report #70583.
AliFlowCommonHist class: removed hist fHistMultOrig which was not useful, added hists of the angle of the Q vectors.
AliFlowAnalysisWithLeeYangZeros.cxx and AliFlowAnalysisWithLYZEventPlane.cxx: reading the number of events from fHistQ in stead of fHistMultOrig.
AliFlowAnalysisWithScalarProduct class: Extra cout in Finish() and some cosmetics.
Extending the functionality of the physics selection. Instead of providing a yes/no decision, it
supports now several concurrent offline trigger selections. At present these are (defined in
AliVEvent.h --> EOfflineTriggerTypes):
1) AliVEvent::kMB: Minimum bias trigger (corresponding to the old behavior), all detectors
2) AliVEvent::kMBNoTRD: Same as kMB, but TRD not read out (this is a separate online trigger
class which became active now)
3) AliVEvent::kMUON: Muon trigger
4) AliVEvent::kHighMult: High-multiplicity trigger
For all those the (usual) offline SPD or V0 selection is performed. The available offline
triggers will be extended when needed.
To use this functionality you call for your task SetCollisionCandidates with a mask, composed
from the above flags. E.g. to select MB and MUON events:
myTask->SetCollisionCandidates(AliVEvent::kMB | AliVEvent::kMUON)
Doing that your task is only called for the requested events.
If in your UserExec you want to look at the decision of the physics selection, you can do that
in the same way as before with
UInt_t mask = fInputHandler->IsEventSelected()
and in mask the bits corresponding to the above offline triggers are set.
The output bit mask of the physics selection is stored in the AOD event header, and therefore
the AOD analysis can work in the same way as ESD analysis. I.e. you can use
myTask->SetCollisionCandidates and fInputHandler->IsEventSelected() in the exact same way.
adding the D0 trigger component to default the configuration for HLT simulation. Depending on the availability of simulated raw data the component works on ESDs and MC information (running on digits) or ITS tracks and vertex information (raw data)