- AliMUONRecoParam.cxx:
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2008 16:38:00 +0000 (16:38 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2008 16:38:00 +0000 (16:38 +0000)
Fill in the "event specie" variable according what the set of
parameters is designed for, as defined in AliRecoParam:

- AliMUONESDInterface.h, AliMUONESDInterface.cxx,
AliMUONTrackReconstructor.cxx, AliMUONTrackReconstructorK.cxx,
AliMUONRecoCheck.h, AliMUONRecoCheck.cxx, MUONRefit.C,
MUONAlignment.C, AliEveMUONData.cxx, AliEveMUONTrack.cxx:
Use the Kalman filter + smoother to recompute track parameters at
each clusters when recovering a MUONTrack from an ESDTtrack.
You can use the static method ResetTracker(...) to change it by
providing a new AliMUONRecoParam object to the interface.

- AliMUONRefitter.h, AliMUONRefitter.cxx, AliMUONTrackHitPattern.h:
fix compilation warning

- AliMUONVTrackReconstructor.h, AliMUONTrackHitPattern.cxx,
AliMUONTrackExtrap.cxx, AliMUONTrack.cxx:
Remove unnecessary include

- AliMUONReconstructor.cxx, AliMUONVTrackReconstructor.cxx,
AliMUONTracker.cxx, MUONClusterInfo.C:

Philippe

22 files changed:
EVE/EveDet/AliEveMUONData.cxx
EVE/EveDet/AliEveMUONTrack.cxx
MUON/AliMUONESDInterface.cxx
MUON/AliMUONESDInterface.h
MUON/AliMUONRecoCheck.cxx
MUON/AliMUONRecoCheck.h
MUON/AliMUONRecoParam.cxx
MUON/AliMUONReconstructor.cxx
MUON/AliMUONRefitter.cxx
MUON/AliMUONRefitter.h
MUON/AliMUONTrack.cxx
MUON/AliMUONTrackExtrap.cxx
MUON/AliMUONTrackHitPattern.cxx
MUON/AliMUONTrackHitPattern.h
MUON/AliMUONTrackReconstructor.cxx
MUON/AliMUONTrackReconstructorK.cxx
MUON/AliMUONTracker.cxx
MUON/AliMUONVTrackReconstructor.cxx
MUON/AliMUONVTrackReconstructor.h
MUON/MUONAlignment.C
MUON/MUONClusterInfo.C
MUON/MUONRefit.C

index 88297c1..57edfcb 100644 (file)
@@ -28,7 +28,6 @@
 #include "AliMUONTrack.h"
 #include "AliMUONESDInterface.h"
 #include "AliESDMuonTrack.h"
-#include "AliMUONRecoParam.h"
 #include "AliESDEvent.h"
 #include "TTree.h"
 #include "TString.h"
@@ -276,15 +275,11 @@ void AliEveMUONData::LoadRecPointsFromESD(Char_t *fileName)
     return;
   }
     
-  AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
-  
-  cout << "FIXME: I should get the RecoParams from the OCDB at this point !" << endl;
-  
   Int_t nTracks = Int_t(esdEvent->GetNumberOfMuonTracks());
   for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
     esdTrack = esdEvent->GetMuonTrack(iTrack);
     if (!esdTrack->ClustersStored()) continue;
-    AliMUONESDInterface::ESDToMUON(recoParam,*esdTrack,muonTrack);
+    AliMUONESDInterface::ESDToMUON(*esdTrack,muonTrack);
     nTrackParam = muonTrack.GetTrackParamAtCluster()->GetEntries();
     for(Int_t iCluster = 0; iCluster < nTrackParam; iCluster++) {
       trackParam = (AliMUONTrackParam *) muonTrack.GetTrackParamAtCluster()->At(iCluster);
@@ -304,8 +299,6 @@ void AliEveMUONData::LoadRecPointsFromESD(Char_t *fileName)
 
   delete esdEvent;
   
-  delete recoParam;
-  
   esdFile->Close();
 
 }
index e38290f..6bb0e9e 100644 (file)
@@ -26,7 +26,6 @@
 #include <AliMUONConstants.h>
 #include <AliMUONESDInterface.h>
 #include <AliMUONVCluster.h>
-#include <AliMUONRecoParam.h>
 
 #include <TClonesArray.h>
 #include <TStyle.h>
@@ -676,14 +675,8 @@ void AliEveMUONTrack::MakeESDTrack(AliESDMuonTrack *mtrack)
 
   fTrack = new AliMUONTrack();
 
-  AliMUONRecoParam* recoParam = AliMUONRecoParam::GetCosmicParam();
-  
-  cout << "FIXME: should get recoParam from OCDB here !" << endl;
-  
   // create a simple track from the ESD track
-  AliMUONESDInterface::ESDToMUON(recoParam,*mtrack,*fTrack);
-
-  delete recoParam;
+  AliMUONESDInterface::ESDToMUON(*mtrack,*fTrack);
   
   // reset track parameters at vertex to the ones at DCA
   AliMUONTrackParam paramAtDCA;
index 3c12995..605765b 100644 (file)
@@ -61,6 +61,9 @@
 /// 2) loading a whole ESDEvent and using the finders and/or the iterators
 ///    to access the corresponding MUON objects
 ///
+/// note: You can set the recoParam used to refit the MUON track with ResetTracker(...);
+///       By default we use Kalman filter + Smoother
+///
 /// \author Philippe Pillot
 //-----------------------------------------------------------------------------
 
@@ -68,6 +71,7 @@
 ClassImp(AliMUONESDInterface)
 /// \endcond
 
+AliMUONRecoParam* AliMUONESDInterface::fgRecoParam = 0x0;
 AliMUONVTrackReconstructor* AliMUONESDInterface::fgTracker = 0x0;
 
 TString AliMUONESDInterface::fgTrackStoreName = "AliMUONTrackStoreV1";
@@ -76,9 +80,8 @@ TString AliMUONESDInterface::fgDigitStoreName = "AliMUONDigitStoreV2R";
 TString AliMUONESDInterface::fgTriggerStoreName = "AliMUONTriggerStoreV1";
 
 //_____________________________________________________________________________
-AliMUONESDInterface::AliMUONESDInterface(AliMUONRecoParam* recoParam)
+AliMUONESDInterface::AliMUONESDInterface()
 : TObject(),
-fRecoParam(recoParam),
 fTracks(0x0),
 fDigits(0x0),
 fTriggers(0x0),
@@ -159,7 +162,7 @@ void AliMUONESDInterface::LoadEvent(AliESDEvent& esdEvent)
     if (!esdTrack->ContainTrackerData()) continue;
     
     // add it to track store
-    AliMUONTrack* track = Add(GetRecoParam(),*esdTrack, *fTracks);
+    AliMUONTrack* track = Add(*esdTrack, *fTracks);
     
     // prepare cluster map
     AliMpExMap* cMap = new AliMpExMap;
@@ -432,6 +435,32 @@ AliMUONVCluster* AliMUONESDInterface::FindClusterInTrack(const AliMUONTrack& tra
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
 
 //_____________________________________________________________________________
+void AliMUONESDInterface::ResetTracker(const AliMUONRecoParam* recoParam)
+{
+  /// Reset the MUON tracker using "recoParam" if provided.
+  /// If not provided, will use Kalman filter + Smoother
+  
+  delete fgTracker;
+  delete fgRecoParam;
+  
+  if (recoParam) {
+    
+    fgRecoParam = new AliMUONRecoParam(*recoParam);
+    
+  }else {
+    
+    fgRecoParam = AliMUONRecoParam::GetLowFluxParam();
+    fgRecoParam->SetTrackingMode("KALMAN");
+    fgRecoParam->UseSmoother(kTRUE);
+    fgRecoParam->SetBendingVertexDispersion(10.);
+    
+  }
+  
+  fgTracker = AliMUONTracker::CreateTrackReconstructor(fgRecoParam,0x0);
+  
+}
+
+//_____________________________________________________________________________
 AliMUONVTrackStore* AliMUONESDInterface::NewTrackStore()
 {
   /// Create an empty track store of type fgTrackStoreName
@@ -609,9 +638,12 @@ void AliMUONESDInterface::SetParamCov(const AliMUONTrackParam& trackParam, AliES
 }
 
 //_____________________________________________________________________________
-void AliMUONESDInterface::ESDToMUON(const AliMUONRecoParam* recoParam, const AliESDMuonTrack& esdTrack, AliMUONTrack& track)
+void AliMUONESDInterface::ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrack& track)
 {
   /// Transfert data from ESDMuon track to MUON track
+  /// note: The MUON track recovered from ESD is refitted by using the provided recoParams.
+  ///       If not provided (=0x0), the parameters at each cluster are simply the
+  ///       extrapolation of parameters at the first one.
   
   // if the ESDMuon track is a ghost then return an empty MUON track
   if (!esdTrack.ContainTrackerData()) {
@@ -679,7 +711,7 @@ void AliMUONESDInterface::ESDToMUON(const AliMUONRecoParam* recoParam, const Ali
     AliMUONTrackExtrap::ExtrapToZCov(firstTrackParam,firstTrackParam->GetClusterPtr()->GetZ());
     
     // refit the track to get better parameters and covariances at each cluster (temporary disable track improvement)
-    if (!fgTracker) fgTracker = AliMUONTracker::CreateTrackReconstructor(recoParam,0x0);
+    if (!fgTracker) ResetTracker();
     if (!fgTracker->RefitTrack(track, kFALSE)) track.UpdateCovTrackParamAtCluster();
     
   } else {
@@ -924,14 +956,13 @@ void AliMUONESDInterface::MUONToESD(const AliMUONVDigit& digit, AliESDMuonPad& e
 }
 
 //___________________________________________________________________________
-AliMUONTrack* 
-AliMUONESDInterface::Add(const AliMUONRecoParam* recoParam, const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore)
+AliMUONTrack* AliMUONESDInterface::Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore)
 {
   /// Create MUON track from ESDMuon track and add it to the store
   /// return a pointer to the track into the store (0x0 if the track already exist)
   if(trackStore.FindObject(esdTrack.GetUniqueID())) return 0x0;
   AliMUONTrack* track = trackStore.Add(AliMUONTrack());
-  ESDToMUON(recoParam,esdTrack, *track);
+  ESDToMUON(esdTrack, *track);
   return track;
 }
 
index 5541e86..8d56643 100644 (file)
@@ -38,7 +38,7 @@ class AliMUONESDInterface : public TObject
 {
 public: // methods to play with internal objects
   
-  AliMUONESDInterface(AliMUONRecoParam* recoParam);
+  AliMUONESDInterface();
   virtual ~AliMUONESDInterface();
   
   virtual void Clear(Option_t* = "");
@@ -79,10 +79,12 @@ public: // methods to play with internal objects
   TIterator* CreateDigitIteratorInCluster(UInt_t clusterId) const;
   TIterator* CreateLocalTriggerIterator() const;
   
-  const AliMUONRecoParam* GetRecoParam() const { return fRecoParam; }
   
 public: // static methods
   
+  /// Reset the MUON tracker (using "recoParam" if provided)
+  static void ResetTracker(const AliMUONRecoParam* recoParam = 0x0);
+  
   /// Set the version of track store
   static void UseTrackStore(TString name) {fgTrackStoreName = name;}
   /// Set the version of cluster store
@@ -111,7 +113,7 @@ public: // static methods
   static void SetParamCov(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
   
   // ESDMuon objects --> MUON objects conversion
-  static void ESDToMUON(const AliMUONRecoParam* recoParam, const AliESDMuonTrack& esdTrack, AliMUONTrack& track);
+  static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrack& track);
   static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONLocalTrigger& locTrg);
   static void ESDToMUON(const AliESDMuonCluster& esdCluster, AliMUONVCluster& cluster);
   static void ESDToMUON(const AliESDMuonPad& esdPad, AliMUONVDigit& digit);
@@ -125,7 +127,7 @@ public: // static methods
   
   // Add ESD object into the corresponding MUON store
   // return a pointer to the corresponding MUON object into the store
-  static AliMUONTrack*    Add(const AliMUONRecoParam* recoParam, const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore);
+  static AliMUONTrack*    Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore);
   static void             Add(const AliESDMuonTrack& esdTrack, AliMUONVTriggerStore& triggerStore);
   static AliMUONVCluster* Add(const AliESDMuonCluster& esdCluster, AliMUONVClusterStore& clusterStore);
   static AliMUONVDigit*   Add(const AliESDMuonPad& esdPad, AliMUONVDigitStore& digitStore);
@@ -145,7 +147,8 @@ private:
   
 private:
   
-  static AliMUONVTrackReconstructor* fgTracker; ///< track reconstructor for refitting
+  static AliMUONRecoParam*           fgRecoParam; ///< reconstruction parameters for refitting
+  static AliMUONVTrackReconstructor* fgTracker;   ///< track reconstructor for refitting
     
   static TString fgTrackStoreName;   ///< class name of the track store to use
   static TString fgClusterStoreName; ///< class name of the cluster store to use
@@ -161,7 +164,6 @@ private:
   AliMpExMap* fClusterMap; ///< map of clusters
   AliMpExMap* fDigitMap;   ///< map of digits
   
-  const AliMUONRecoParam* fRecoParam; ///< get reco param
   
   ClassDef(AliMUONESDInterface,0)
 };
index 7bc85de..fd9e35a 100644 (file)
@@ -39,7 +39,6 @@
 #include "AliMUONVClusterStore.h"
 #include "AliMUONConstants.h"
 #include "AliMUONESDInterface.h"
-#include "AliMUONRecoParam.h"
 #include "AliMCEventHandler.h"
 #include "AliMCEvent.h"
 #include "AliStack.h"
@@ -59,9 +58,8 @@ ClassImp(AliMUONRecoCheck)
 /// \endcond
 
 //_____________________________________________________________________________
-AliMUONRecoCheck::AliMUONRecoCheck(AliMUONRecoParam* recoParam, Char_t *esdFileName, Char_t *pathSim)
+AliMUONRecoCheck::AliMUONRecoCheck(Char_t *esdFileName, Char_t *pathSim)
 : TObject(),
-fRecoParam(recoParam),
 fMCEventHandler(new AliMCEventHandler()),
 fESDEvent(new AliESDEvent()),
 fESDTree (0x0),
@@ -191,7 +189,7 @@ void AliMUONRecoCheck::MakeReconstructedTracks()
   Int_t nTracks = (Int_t) fESDEvent->GetNumberOfMuonTracks();
   for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
     AliESDMuonTrack* esdTrack = fESDEvent->GetMuonTrack(iTrack);
-    if (esdTrack->ContainTrackerData()) AliMUONESDInterface::Add(GetRecoParam(),*esdTrack, *fRecoTrackStore);
+    if (esdTrack->ContainTrackerData()) AliMUONESDInterface::Add(*esdTrack, *fRecoTrackStore);
   }
   
 }
index 4e937c5..5600a2c 100644 (file)
@@ -18,12 +18,11 @@ class TTree;
 class AliESDEvent;
 class AliMCEventHandler;
 class AliMUONVTrackStore;
-class AliMUONRecoParam;
 
 class AliMUONRecoCheck : public TObject 
 {
 public:
-  AliMUONRecoCheck(AliMUONRecoParam* recoParam, Char_t *chLoader, Char_t *pathSim = "./");
+  AliMUONRecoCheck(Char_t *chLoader, Char_t *pathSim = "./");
   virtual ~AliMUONRecoCheck();
 
   /// Return the list of reconstructed tracks
@@ -50,8 +49,6 @@ private:
   /// Not implemented
   AliMUONRecoCheck& operator = (const AliMUONRecoCheck& rhs);
 
-  const AliMUONRecoParam* GetRecoParam() const { return fRecoParam; }
-  
   void ResetStores();
   
   void MakeReconstructedTracks();
@@ -74,8 +71,6 @@ private:
   AliMUONVTrackStore* fRecoTrackRefStore; ///< current reconstructible tracks (owner)
   AliMUONVTrackStore* fRecoTrackStore;    ///< current reconstructed tracks (owner)
   
-  const AliMUONRecoParam* fRecoParam; ///< pointer to reco param
-  
   ClassDef(AliMUONRecoCheck, 0)   //Utility class to check reconstruction
 };
 
index 33f88ec..a5fb04f 100644 (file)
 
 
 #include "AliMUONRecoParam.h"
+#include "AliMUONPadStatusMaker.h"
 
+#include "AliRecoParam.h"
 #include "AliLog.h"
-#include "AliMUONPadStatusMaker.h"
 
 #include <Riostream.h>
 
@@ -70,12 +71,9 @@ AliMUONRecoParam::AliMUONRecoParam()
   fChargeSigmaCut(4.0)
 {
   /// Constructor
-  SetNameTitle("MUON","MUON");
   
-       SetDefaultLimits();
-       
-  // use the default parameters for low flux environment
-  SetLowFluxParam();
+  SetNameTitle("Dummy","Dummy");
+  SetDefaultLimits();
 }
 
 //_____________________________________________________________________________
@@ -147,6 +145,8 @@ void AliMUONRecoParam::SetLowFluxParam()
 {
   /// Set reconstruction parameters for low flux environment
   
+  SetNameTitle("Low Flux","Low Flux");
+  SetEventSpecie(AliRecoParam::kLowMult);
   fMinBendingMomentum = 1.;
   fMaxBendingMomentum = 3000.;
   fMaxNonBendingSlope = 0.3;
@@ -180,6 +180,8 @@ void AliMUONRecoParam::SetHighFluxParam()
 {
   /// Set reconstruction parameters for high flux environment
   
+  SetNameTitle("High Flux","High Flux");
+  SetEventSpecie(AliRecoParam::kHighMult);
   fMinBendingMomentum = 1.;
   fMaxBendingMomentum = 3000.;
   fMaxNonBendingSlope = 0.3;
@@ -229,6 +231,8 @@ void AliMUONRecoParam::SetCosmicParam()
 {
   /// Set reconstruction parameters for high flux environment
   
+  SetNameTitle("Cosmic","Cosmic");
+  SetEventSpecie(AliRecoParam::kCosmic);
   fMinBendingMomentum = 1.;
   fMaxBendingMomentum = 10000000.;
   fMaxNonBendingSlope = 0.3;
@@ -263,7 +267,9 @@ void AliMUONRecoParam::Print(Option_t *option) const
   /// print reconstruction parameters
   /// if option = FULL then print also unused parameters
   
-  cout<<endl<<"\t------Reconstruction parameters------"<<endl;
+  cout<<endl<<"\t------Reconstruction parameters ("<<GetName()<<")------"<<endl;
+  
+  if (IsDefault()) cout<<"\t\t*** Parameters used by default ***"<<endl;
   
   cout<<Form("Calibration mode = %s",fCalibrationMode.Data())<<endl;
   cout<<Form("Clustering mode = %s",fClusteringMode.Data())<<endl;
@@ -402,7 +408,7 @@ void AliMUONRecoParam::Print(Option_t *option) const
   
   cout << Form("And we cut on charge >= %7.2f x ( pedestal sigma ) ",ChargeSigmaCut()) << endl;
   
-  cout<<"\t-------------------------------------"<<endl<<endl;
+  cout<<"\t----------------------------------------------"<<endl<<endl;
   
 }
 
index 935c2f9..bbb4e15 100644 (file)
 ///
 /// Implementation of AliReconstructor for MUON subsystem.
 ///
-/// The clustering mode and the associated parameters can be changed by using
-/// AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLow(High)FluxParam();
-/// muonRecoParam->Set...(); // see methods in AliMUONRecoParam.h for details
-/// AliRecoParam::Instance()->RegisterRecoParam(muonRecoParam);
+/// The clustering mode and the associated parameters can be changed through the
+/// AliMUONRecoParam object set in the reconstruction macro or read from the CDB
+/// (see methods in AliMUONRecoParam.h file for details)
 ///
 /// Valid modes are :
 ///
index 75ec6ef..6664980 100644 (file)
@@ -38,7 +38,9 @@
 //-----------------------------------------------------------------------------
 /// \class AliMUONRefitter
 ///
-/// create new MUON object from ESD objects given as input (through the ESDInterface):
+/// This class has been developped to simplify the re-reconstruction of the MUON tracks
+/// stored into ESD with different recoParams and/or after having re-calibrated the digits.
+/// It creates new MUON object from ESD objects given as input (through the ESDInterface) then:
 ///
 /// - re-clusterize the ESD clusters using the attached ESD pads
 ///   (several new clusters can be reconstructed per ESD cluster)
@@ -61,6 +63,7 @@ ClassImp(AliMUONRefitter)
 //_____________________________________________________________________________
 AliMUONRefitter::AliMUONRefitter(const AliMUONRecoParam* recoParam)
 : TObject(),
+  fRecoParam(recoParam),
   fGeometryTransformer(0x0),
   fClusterServer(0x0),
   fTracker(0x0),
index eca7428..fd52295 100644 (file)
@@ -66,12 +66,12 @@ private:
   
 private:
     
+  const AliMUONRecoParam*     fRecoParam;           ///< pointer to reco param (not owner)
   AliMUONGeometryTransformer* fGeometryTransformer; ///< geometry transformer (owner)
   AliMUONVClusterServer*      fClusterServer;       ///< clusterizer (owner)
   AliMUONVTrackReconstructor* fTracker;             ///< tracker (owner)
   AliMUONESDInterface*        fESDInterface;        ///< container of MUON tracks/clusters/digits (not owner)
   
-  const AliMUONRecoParam* fRecoParam; ///< pointer to reco param
   
   ClassDef(AliMUONRefitter,0)
 };
index 7a6de3b..10f0460 100644 (file)
@@ -24,7 +24,6 @@
 #include "AliMUONTrack.h"
 
 #include "AliMUONReconstructor.h"
-#include "AliMUONRecoParam.h"
 #include "AliMUONVCluster.h"
 #include "AliMUONVClusterStore.h"
 #include "AliMUONObjectPair.h"
@@ -457,25 +456,15 @@ Bool_t AliMUONTrack::IsValid(UInt_t requestedStationMask)
   Int_t nClusters = GetNClusters();
   AliMUONTrackParam *trackParam;
   Int_t currentStation(0);
+  UInt_t presentStationMask(0);
   
-  UInt_t m(0);
-  
-  for (Int_t i = 0; i < nClusters; i++) 
-  {
+  for (Int_t i = 0; i < nClusters; i++) {
     trackParam = (AliMUONTrackParam*) fTrackParamAtCluster->UncheckedAt(i);
-    
-    // skip unrequested stations
-//    while (expectedStation < AliMUONConstants::NTrackingSt() &&
-//        !AliMUONReconstructor::GetRecoParam()->RequestStation(expectedStation)) expectedStation++;
-//    
-
     currentStation = trackParam->GetClusterPtr()->GetChamberId()/2;
-    
-    m |= ( 1 << currentStation );
-    
+    presentStationMask |= ( 1 << currentStation );
   }
   
-  return ( (requestedStationMask & m) == requestedStationMask ) ;
+  return ( (requestedStationMask & presentStationMask) == requestedStationMask );
 }
 
   //__________________________________________________________________________
index e7762ac..19c3464 100644 (file)
@@ -26,7 +26,6 @@
 #include "AliMUONTrackParam.h"
 #include "AliMUONConstants.h"
 #include "AliMUONReconstructor.h"
-#include "AliMUONRecoParam.h"
 
 #include "AliMagF.h" 
 
index 6a22770..57c5984 100644 (file)
@@ -58,7 +58,6 @@
 #include "AliMpVSegmentation.h"
 #include "AliMpDEManager.h"
 #include "AliMUONReconstructor.h"
-#include "AliMUONRecoParam.h"
 #include "AliMUONTriggerTrack.h"
 #include "AliMUONVTriggerTrackStore.h"
 
index febe798..e946edc 100644 (file)
@@ -98,6 +98,7 @@ private:
 
   void CheckConstants() const;
 
+  const AliMUONRecoParam* fRecoParam; //!< pointer to reco parameters
   const AliMUONGeometryTransformer& fTransformer; //!< geometry transformer
   const AliMUONDigitMaker& fDigitMaker; //!< pointer to digit maker
 
@@ -117,8 +118,6 @@ private:
     kSlatEff,
     kBoardEff
   };
-
-  const AliMUONRecoParam* fRecoParam; //!< pointer to reco parameters
   
   ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
 };
index 3e9ba9b..d087b33 100644 (file)
@@ -1421,7 +1421,7 @@ Bool_t AliMUONTrackReconstructor::RefitTrack(AliMUONTrack &track, Bool_t enableI
   /// re-fit the given track
   
   // check validity of the track
-  if (!track.IsValid(GetRecoParam()->RequestedStationMask())) {
+  if (track.GetNClusters() < 3) {
     AliWarning("the track does not contain enough clusters --> unable to refit");
     return kFALSE;
   }
index 1e83ef4..d876a33 100644 (file)
@@ -1384,9 +1384,11 @@ void AliMUONTrackReconstructorK::ComplementTracks(const AliMUONVClusterStore& cl
        if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 1) || (AliLog::GetGlobalDebugLevel() >= 1)) {
          cout << "ComplementTracks: found one cluster in chamber(1..): " << chamberId+1 << endl;
          bestTrackParamAtCluster.GetClusterPtr()->Print();
-         cout<<endl<<"Track parameters and covariances at cluster:"<<endl;
-         bestTrackParamAtCluster.GetParameters().Print();
-         bestTrackParamAtCluster.GetCovariances().Print();
+         if ((AliLog::GetDebugLevel("MUON","AliMUONTrackReconstructorK") >= 2) || (AliLog::GetGlobalDebugLevel() >= 2)) {
+           cout<<endl<<"Track parameters and covariances at cluster:"<<endl;
+           bestTrackParamAtCluster.GetParameters().Print();
+           bestTrackParamAtCluster.GetCovariances().Print();
+         }
        }
        
        trackParam->SetRemovable(kTRUE);
@@ -1537,7 +1539,7 @@ Bool_t AliMUONTrackReconstructorK::RefitTrack(AliMUONTrack &track, Bool_t enable
   /// re-fit the given track
   
   // check validity of the track
-  if (!track.IsValid(GetRecoParam()->RequestedStationMask())) {
+  if (track.GetNClusters() < 3) {
     AliWarning("the track does not contain enough clusters --> unable to refit");
     return kFALSE;
   }
index 0ec3dc3..7a6fab2 100644 (file)
 /// reconstruct tracks from recpoints
 ///
 /// Actual tracking is performed by some AliMUONVTrackReconstructor children
-/// Tracking modes (ORIGINAL, KALMAN) and associated options and parameters
-/// can be changed by using:
-/// AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLow(High)FluxParam();
-/// muonRecoParam->Set...(); // see methods in AliMUONRecoParam.h for details
-/// AliMUONReconstructor::SetRecoParam(muonRecoParam);
+/// Tracking modes (ORIGINAL, KALMAN) and associated options and parameters can be changed
+/// through the AliMUONRecoParam object set in the reconstruction macro or read from the CDB
+/// (see methods in AliMUONRecoParam.h file for details)
 ///
 /// \author Christian Finck and Laurent Aphecetche, SUBATECH Nantes
 //-----------------------------------------------------------------------------
index 79f491d..074c42d 100644 (file)
 /// * ValidateTracksWithTrigger to match tracker/trigger tracks
 ///
 /// Several options and adjustable parameters are available for both KALMAN and ORIGINAL
-/// tracking algorithms. They can be changed by using:
-/// AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLow(High)FluxParam();
-/// muonRecoParam->Set...(); // see methods in AliMUONRecoParam.h for details
-/// AliMUONReconstructor::SetRecoParam(muonRecoParam);
+/// tracking algorithms. They can be changed through the AliMUONRecoParam object
+/// set in the reconstruction macro or read from the CDB
+/// (see methods in AliMUONRecoParam.h file for details)
 ///
 /// Main parameters and options are:
 /// - *fgkSigmaToCutForTracking* : quality cut used to select new clusters to be
index c814be8..961a90a 100644 (file)
@@ -12,7 +12,6 @@
 //  Author: Philippe Pillot
 
 #include "AliMUONReconstructor.h"
-#include "AliMUONRecoParam.h"
 
 #include <TObject.h>
 
@@ -57,29 +56,6 @@ class AliMUONVTrackReconstructor : public TObject {
   virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0;
   
   
-  // methods previously got from the static muonrecoparam:
-  //
-  // MakeMoreTrackCandidates()
-  //    
-  // ComplementTracks()
-  //    
-  // ImproveTracks()
-  //
-  // GetMaxNonBendingSlope()
-  // GetMaxBendingSlope()
-  //
-  // GetMinBendingMomentum()
-  // GetMaxBendingMomentum()
-  //
-  // UseChamber(Int_t chamberId)
-  //
-  // GetMaxNonBendingDistanceToTrack()
-  // GetSigmaCutForTracking()
-  // GetMaxBendingDistanceToTrack()
-  // GetSigmaCutForTracking()
-  // TrackAllTracks()
-  // RequestStation(Int_t stationId)
-  
  protected:
 
   TClonesArray *fRecTracksPtr; ///< pointer to array of reconstructed tracks
index 77876c7..a418eaf 100644 (file)
@@ -44,7 +44,6 @@
 #include "AliMUONTrackParam.h"
 #include "AliMUONGeometryTransformer.h"
 #include "AliMUONESDInterface.h"
-#include "AliMUONRecoParam.h"
 
 #include "AliESDEvent.h"
 #include "AliESDMuonTrack.h"
@@ -208,7 +207,7 @@ void MUONAlignment(Int_t nEvents = 100000, char* geoFilename = "geometry.root",
        fBenMom->Fill(1./invBenMom);
        if (TMath::Abs(invBenMom)<=1.04) {
          AliMUONTrack track;
-         AliMUONESDInterface::ESDToMUON(AliMUONRecoParam::GetLowFluxParam(),*esdTrack, track);
+         AliMUONESDInterface::ESDToMUON(*esdTrack, track);
          alig->ProcessTrack(&track);
          alig->LocalFit(iTrackOk++,trackParams,0);
        }
index e340712..02f8e79 100644 (file)
@@ -68,6 +68,8 @@ TTree* GetESDTree(TFile *esdFile);
 void MUONClusterInfo(Int_t nevents = -1, const char* esdFileName = "AliESDs.root", const char* outFileName = "clusterInfo.root")
 {
   /// load ESD event in the ESDInterface to recover MUON objects;
+  /// track parameters at each cluster are recomputed by the interface using Kalman filter + Smoother
+  /// (It can be changed by resetting the tracker in the interface with a new recoParam object);
   /// fill AliMUONESDClusterInfo object with ESD cluster + corresponding track parameters;
   /// write results in a new root file.
   
@@ -248,11 +250,11 @@ void Prepare()
     exit(-1);
   }
   
-  // eventually set reconstruction parameters for refit (otherwise read from OCDB)
-/*  AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLowFluxParam();
-  muonRecoParam->Print("FULL");
-  AliRecoParam::Instance()->RegisterRecoParam(muonRecoParam);
-*/  
+  // Reset the reconstruction parameters for track refitting if needed
+  // (by default will use Kalman filter + Smoother)
+//  AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLowFluxParam();
+//  AliMUONESDInterface::ResetTracker(muonRecoParam);
+  
 }
 
 //-----------------------------------------------------------------------
index e7bed8a..3278c52 100644 (file)
@@ -70,16 +70,22 @@ void MUONRefit(Int_t nevents = -1, const char* esdFileNameIn = "AliESDs.root", c
   // prepare the refitting
   gRandom->SetSeed(1);
   Prepare();
+  
+  // set reconstruction parameters used for refitting
+  AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLowFluxParam();
+  muonRecoParam->Print("FULL");
+  
   AliMUONESDInterface esdInterface;
-  AliMUONRefitter refitter;
+  AliMUONRefitter refitter(muonRecoParam);
   refitter.Connect(&esdInterface);
   
   // open the ESD file and tree
   TFile* esdFile = TFile::Open(esdFileNameIn);
   TTree* esdTree = GetESDTree(esdFile);
   
-  // create the ESD output tree
-  gROOT->cd();
+  // create the ESD output file and tree
+  TFile* newESDFile = TFile::Open(esdFileNameOut, "RECREATE");
+  newESDFile->SetCompressionLevel(2);
   TTree* newESDTree = esdTree->CloneTree(0);
   
   // connect ESD event to the ESD tree
@@ -179,14 +185,13 @@ void MUONRefit(Int_t nevents = -1, const char* esdFileNameIn = "AliESDs.root", c
   timer.Stop();
   
   // write output ESD tree
-  TFile* newESDFile = TFile::Open(esdFileNameOut, "RECREATE");
-  newESDFile->SetCompressionLevel(2);
+  newESDFile->cd();
   newESDTree->Write();
+  delete newESDTree;
   newESDFile->Close();
   
   // free memory
   esdFile->Close();
-  delete newESDTree;
   delete esd;
   
   cout<<endl<<"time to refit: R:"<<timer.RealTime()<<" C:"<<timer.CpuTime()<<endl<<endl;
@@ -221,12 +226,6 @@ void Prepare()
     exit(-1);
   }
   
-  // set reconstruction parameters
-  AliMUONRecoParam *muonRecoParam = AliMUONRecoParam::GetLowFluxParam();
-  muonRecoParam->CombineClusterTrackReco(kFALSE);
-  muonRecoParam->Print("FULL");
-  AliRecoParam::Instance()->RegisterRecoParam(muonRecoParam);
-  
 }
 
 //-----------------------------------------------------------------------