Changes for #87331: Combined commit MUON+HLT AliMUONDigitCalibrator Simplified the ctors interface (removed a default parameter) AliMUONReconstructor Propagate AliMUONDigitCalibrator interface change Change order of delete calls in the destructors (to avoid access dead OCDB objects in dtor of calibrator) AliMUONTrackerDataMaker Propagate AliMUONDigitCalibrator interface change AliMUON Propagate changes in AliMUONDigitizerV3 (e.g. pass the recoparams when creating the digitizer) AliMUONVDigit AliMUONRealDigit AliMUONDigit All digits now have the ChargeInFC method defined AliMUONDigitizerV3 Now uses the RecoParams to know how to decalibrate. Now assumes that all digits to be decalibrated have their charge in fC, as it should be... AliMUONSDigitizerV2 AliMUONResponseV0 Simulated charges are now in fC. runSimulation.C runReconstruction.C AlirootRun_MUONtest.sh One more step towards removal of specific OCDB storages for simulations : take MUON/Calib/Gains from raw OCDB. Added an option "-b anchorRunNumber" to AlirootRun_MUONtest.sh in order to test realistic simulations (i.e. using an anchor run). Note that this option references a couple of "private" OCDB files. This is only an interim solution... Config.C Added a parameter to know when we're doing realistic simulations, in which case we must instantiante the ITS to get the correct propagation of the simulated vertex to the reconstruction. AliMUONRecoParam.cxx Added eventspecie to Print() Laurent
Some fixes and updates for the embedding : - added a raw2sdigits.sh script to convert a (real) raw data file to SDigits file(s) suitable for embedding - added a "-e" option to the AlirootRun_MUONtest.sh test script for embedding real data into the test simulation - added an option to runSimulation.C and runReconstruction.C to allow embedding (in particular switch for which OCDB is used) - added an option to AliMUONDigitMaker::Raw2Digits to fill SDigits instead of Digits (otherwise the ADC value was filled instead of the required charge) - added an option to Config.C to indicate whether or not this will be used for embedding (in which case we switch OFF the noise generation, as the noise will naturally come from the real data embedded). Made it compilable to ease debugging (this required mods in rootlogon.C and loadlibs.C) - added the possibility to convert real digits into simulated ones in AliMUONDigitStoreV2S::AddConcreteDigit (the reverse, converting sim digit into real one, e.g. in AliMUONDigitStoreV2R::AddConcreteDigit, is still forbidden). - added a (Is)Converted method to AliMUON(V)Digit to keep track of the digits that were converted from another class - fixed AliMUON::Raw2SDigits in order to use the specified sdigit classname, and to fill the correct part (charge instead of ADC) of the digit - fixed AliMUONDigitizerV3 to allow merging of digit stores of different classes (Laurent)
Class AliMUONCDB: - Changed to namespace (remove constructor and destructor) - Added new functions to ease the loading of Mapping, Magnetic Field and RecoParam from OCDB (OCDB path and run number must properly set before using any of these function) - Moved from libMUONbase in libMUONrec Class AliMUONESDInterface: - Adding a flag in functions converting ESD track to MUON track to disable the refitting of track parameters at each cluster. That way, you do not need to load the proper RecoParam and magnetic field, but the drawback is that only the track parameters at first cluster, copied directly from ESD, is meaningful. Macros: - Remove the unnecessary access to geometry, mapping, magnetic field and/or recoParam - Use the new functionalities of AliMUONCDB to load these informations from the OCDB when needed (except geometry for now) Updated relevant READMEs (Philippe P., Ivana)
All: - Speed up the computation/selection of primary track candidates (by up to a factor 100) - Improve computation of initial covariance matrices for Kalman - Use specific covariance matrices when there is no magnetic field - fix potential bug by reordering cluster/track selection - fix selection of track candidates when there is no magnetic field - new protection against tracking divergences (see below) AliMUONRecoParam: - change Cosmic settings - New parameter: maximum number of trigger tracks above which the tracking is cancelled - New parameter: maximum number of track candidates above which the tracking abort (Philippe Pillot)
The present commit corresponds to an important change in the way the Magnetic qField is used in AliRoot. - Only one field will be supported, the Chebichev parametrisation developed by R.Shahoyan, with the name AliMagF. Different field strengths will be obtained by changing the scale factor for the dipole and the solenoid fields. Some highlights of these changes are here - All other mag field classes and maps are deleted - The field is accessed via a call to TGeoGlobalMagField::Instance()->Field(...) both in simulation and in reconstruction. This has involved changes in very many files in the following modules: ACORDE, BCM, EMCAL, EVE, FMD, HLT, HMPID, ITS, MONITOR, MUON, PHOS, PMD, PWG1, PWG3, RAW, STEER, STRUCT, T0, TOF, TPC, TRD, VZERO, ZDC, test. - The modifications to account for the new field were done in the compilable code and in all the macro. These have now to be carefully tested by the authors. - If your macros are creating the field, note that the field should be constructed as: AliMagF* fld = new AliMagF( const char *anyname, // same as before, up to you const char* anytitle, // same as before, ... Int_t integ, // same as before, geant Double_t factorSol=1.,// scaling (including the sign) for the solenoid Double_t factorDip=1.,// new parameter, scaling for dipole Double_t fmax=15, // same as before BMap_t maptype = k5kG,// map type: choices are AliMagF::k5kG, // AliMagF::k2kG and k5kGUniform // the latter will provide former AliMagFC-like // field: constant Bz for L3, BX parabolic in // Z for dipole const char* path="$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root", // parameterization file to use. BeamType_t btype=kBeamTypepp, // used to define the field for ZDC, // choices are: AliMagF::kBeamTypeAA, // AliMagF::kBeamTypepp, liMagF::kNoBeamField Double_t benergy=7000., // currently only 450, 5000 and 7000 are //supported, will be changed soon Bool_t compensator=kFALSE // this are compensator dipoles for the // Muon dipole, most probably it will be // eliminated soon, set it to kTRUE for // the moment ); - Note that in order to make the field available to Aliroot it should be registered by TGeoGlobalMagField::Instance()->SetField(fld); - The following lock will prevent the field from resetting: TGeoGlobalMagField::Instance()->Lock(); - In the macros and in the code the field may be accessed via either direct call TGeoGlobalMagField::Instance()->Field(const double* x,double *b) or casted to AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField(); in case you need the methods like GetTPCInt(). - Since many classes use only Bz component, I've added a new method AliMagF::GetBz(const double* x) which computes the Bz w/o spending the time on Bx,By.
- Put the code to fill ESD with trigger data back in the correct framework: change MUONESDInterface to set(get) MUONLocalTrigger data in(from) the ESDMuonTrack. - Added protection here and there against ghost tracks ESD (containing trigger data but dummy tracker data). - Use the method AliMUONVTrackReconstrutor::Refit() to recompute precisely the track parameters at each cluster (instead of a simply extrapolating the parameters at the first one) when recovering the MUONTrack from the ESDMuonTrack in the MUONESDInterface. (Philippe P.)
Re-establishing creation of RecPoints in TreeR (Laurent) Introducing tracking mode starting from trigger tracks (Laurent) New options for tracking and some bugs fixed (Philippe P.) ======================================================== New classes : - AliMUONLegacyClusterServer (Laurent) A cluster server which is doing no more than serving clusters from an existing cluster store. Used to re-establish clustering in local reconstruction (see AliMUONReconstructor's changes) - AliMUONTriggerTrackToTrackerClusters (Laurent) A class to replace clusters in stations 4 and 5 (that are discarded (if they exist)) by "fake" ones, created from the extrapolation of trigger tracks to st45. Created to allow reconstruction of data taken during Feb. 08 cosmic run where st45 were not ready yet. ======================================================== AliMUONReconstructor.cxx (Laurent) Re-establishing, in the case of non-combined tracking, the filling of the TreeR with the clusters, i.e. clustering is done in local reconstruction in that case, and not in tracking phase. AliMUONClusterFinderMLEM.cxx (Laurent) Fixing a small memory leak libMUONrec.pkg (Laurent) MUONrecLinkDef.h Adding new classes AliMUONClusterStoreV2.cxx (Laurent) Fixing a memory leak in ReMap AliMUONRawClusterV2.cxx (Laurent) AliMUONCluster.cxx Fixing errors found by valgrind AliMUONSimpleClusterServer (Laurent) Changing ctor parameter from ref to pointer, as we're taking ownership of that object, and adding a method to find out in which DE a global (x,y) position is. AliMUONVClusterServer.h (Laurent) Changing comment which did not follow interface change... AliMUONTracker (Laurent) If no cluster server given, use legacy one (see also changes in AliMUONReconstructor) AliMUONRecoParam (Laurent & Philippe P.) New options AliMUONRefitter (Laurent) Avoids code duplication and use new SimpleClusterServer interface. AliMUON*Tracker* (Philippe P.) - solved the problem of divergence in the tracking of low momentum muons - added a reconstruction parameter defining the maximum non bending slope of the primary track candidates - added the possibility to disable one or more chambers in the reconstruction (new option) - added the possibility to reconstruct a track even if it has no cluster in one or more stations (new option) - added the possibility to make a primary track candidate starting from one cluster on station 4 and one on station 5 (new option)
- new interface beween MUON objects (track/cluster/digit) and ESD objects (track/cluster/pad) --> removed most of dependences towards ESD objects in the MUON code Two ways of using this interface: 1) converting individual objects using static ESD <--> MUON conversion methods 2) loading an entire ESD event into the interface and using the member methods to access MUON objects Philippe Pillot
- Compute parameter covariances including absorber dispersion effects and/or resolution of absorber corrections (if any) when extrapolating track to vertex. - Added new unequivocal methods to perform track extrapolation to vertex, w/wo multiple scattering correction and w/wo energy loss correction (ExtrapToVertex(...), ExtrapToVertexWithoutELoss(...), ExtrapToVertexWithoutBranson(...) , ExtrapToVertexUncorrected(...). (Philippe P.)