X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRecoParam.h;h=3da391d24d447150dd28231a93f6905977aed3f2;hb=c11ea7d4bcf73d08aa4c3719393d0e05d331b712;hp=c1d928c7f072bdf1b980034286073cce0e0a5d9b;hpb=7d5d0cc5e751bdf612fb78ed7cfe55397a79f855;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRecoParam.h b/MUON/AliMUONRecoParam.h index c1d928c7f07..3da391d24d4 100644 --- a/MUON/AliMUONRecoParam.h +++ b/MUON/AliMUONRecoParam.h @@ -24,6 +24,7 @@ class AliMUONRecoParam : public AliDetectorRecoParam static AliMUONRecoParam *GetLowFluxParam(); static AliMUONRecoParam *GetHighFluxParam(); static AliMUONRecoParam *GetCosmicParam(); + static AliMUONRecoParam *GetCalibrationParam(); /// set the calibration mode (see GetCalibrationMode() for possible modes) void SetCalibrationMode(Option_t* mode) { fCalibrationMode = mode; fCalibrationMode.ToUpper();} @@ -35,6 +36,22 @@ class AliMUONRecoParam : public AliDetectorRecoParam /// get the clustering (pre-clustering) mode Option_t* GetClusteringMode() const {return fClusteringMode.Data();} + /// Get the (truncated) average of sigmas of pedestal measurements, i.e. noise, of pads + Double_t AverageNoisePadCharge() const { return fAverageNoisePadCharge; } + /// Set the average of sigmas of pedestal measurements, i.e. noise, of pads + void AverageNoisePadCharge(Double_t noise) { fAverageNoisePadCharge = noise; } + + /// Get the lowest charge we allow for pads + Double_t LowestPadCharge() const { return fChargeSigmaCut*fAverageNoisePadCharge; } + + /// Get the cut applied to cut on cluster charge (the charge is cut if below fClusterChargeCut*LowestPadCharge()) + Double_t ClusterChargeCut() const { return fClusterChargeCut; } + /// Set the cut applied to cut on cluster charge (the charge is cut if below fClusterChargeCut*LowestPadCharge()) + void ClusterChargeCut(Double_t n) { fClusterChargeCut=n; } + + /// Get the lowest possible cluster charge + Double_t LowestClusterCharge() const { return ClusterChargeCut()*LowestPadCharge(); } + /// set the tracking mode void SetTrackingMode(Option_t* mode) {fTrackingMode = mode; fTrackingMode.ToUpper();} /// get the tracking mode @@ -61,6 +78,7 @@ class AliMUONRecoParam : public AliDetectorRecoParam void SetMaxBendingMomentum(Double_t val) {fMaxBendingMomentum = val;} /// return the maximum value (GeV/c) of momentum in bending plane Double_t GetMaxBendingMomentum() const {return fMaxBendingMomentum;} + /// set the maximum value of the non bending slope void SetMaxNonBendingSlope(Double_t val) {fMaxNonBendingSlope = val;} /// return the maximum value of the non bending slope @@ -70,13 +88,18 @@ class AliMUONRecoParam : public AliDetectorRecoParam /// return the maximum value of the bending slope Double_t GetMaxBendingSlope() const {return fMaxBendingSlope;} - /// set the vertex dispersion (cm) in non bending plane (used for original tracking only) + /// switch on/off the track selection according to their slope (instead of their impact parameter) + void SelectOnTrackSlope(Bool_t flag) {fSelectTrackOnSlope = flag;} + /// return kTRUE/kFALSE if tracks are selected according to their slope/impact parameter + Bool_t SelectOnTrackSlope() const {return fSelectTrackOnSlope;} + + /// set the vertex dispersion (cm) in non bending plane void SetNonBendingVertexDispersion(Double_t val) {fNonBendingVertexDispersion = val;} - /// return the vertex dispersion (cm) in non bending plane (used for original tracking only) + /// return the vertex dispersion (cm) in non bending plane Double_t GetNonBendingVertexDispersion() const {return fNonBendingVertexDispersion;} - /// set the vertex dispersion (cm) in bending plane (used for original tracking only) + /// set the vertex dispersion (cm) in bending plane void SetBendingVertexDispersion(Double_t val) {fBendingVertexDispersion = val;} - /// return the vertex dispersion (cm) in bending plane (used for original tracking only) + /// return the vertex dispersion (cm) in bending plane Double_t GetBendingVertexDispersion() const {return fBendingVertexDispersion;} /// set the maximum distance to the track to search for compatible cluster(s) in non bending direction @@ -103,7 +126,7 @@ class AliMUONRecoParam : public AliDetectorRecoParam Double_t GetSigmaCutForImprovement() const {return fSigmaCutForImprovement;} /// set the cut in sigma to apply on track during trigger hit pattern search - void SetSigmaCutForTrigger(Double_t val) {fSigmaCutForTrigger = val;} + void SetSigmaCutForTrigger(Double_t val) {fSigmaCutForTrigger = val; fMaxNormChi2MatchTrigger = val*val;} /// return the cut in sigma to apply on track during trigger hit pattern search Double_t GetSigmaCutForTrigger() const {return fSigmaCutForTrigger;} /// set the cut in strips to apply on trigger track during trigger chamber efficiency @@ -115,8 +138,6 @@ class AliMUONRecoParam : public AliDetectorRecoParam /// return the maximum search area in strips to apply on trigger track during trigger chamber efficiency Double_t GetMaxStripAreaForTrigger() const {return fMaxStripAreaForTrigger;} - /// set the maximum normalized chi2 of tracking/trigger track matching - void SetMaxNormChi2MatchTrigger(Double_t val) {fMaxNormChi2MatchTrigger = val;} /// return the maximum normalized chi2 of tracking/trigger track matching Double_t GetMaxNormChi2MatchTrigger() const {return fMaxNormChi2MatchTrigger;} @@ -248,14 +269,53 @@ class AliMUONRecoParam : public AliDetectorRecoParam /// Get the default bending resolution of chamber iCh Double_t GetDefaultBendingReso(Int_t iCh) const {return (iCh >= 0 && iCh < 10) ? fDefaultBendingReso[iCh] : FLT_MAX;} + /// Set the maximum number of trigger tracks above which the tracking is cancelled + void SetMaxTriggerTracks(Int_t maxTriggerTracks) {fMaxTriggerTracks = maxTriggerTracks;} + /// Get the maximum number of trigger tracks above which the tracking is cancelled + Int_t GetMaxTriggerTracks() const {return fMaxTriggerTracks;} + + /// Set the maximum number of track candidates above which the tracking abort + void SetMaxTrackCandidates(Int_t maxTrackCandidates) {fMaxTrackCandidates = maxTrackCandidates;} + /// Get the maximum number of track candidates above which the tracking abort + Int_t GetMaxTrackCandidates() const {return fMaxTrackCandidates;} + + /// Set the limits for the acceptable manu occupancy + void SetManuOccupancyLimits(float low, float high) { fManuOccupancyLimits[0]=low; fManuOccupancyLimits[1]=high; } + /// Retrieve low value of manu occupancy limit + Float_t ManuOccupancyLowLimit() const { return fManuOccupancyLimits[0]; } + /// Retrieve high value of manu occupancy limit + Float_t ManuOccupancyHighLimit() const { return fManuOccupancyLimits[1]; } + + /// Set the limits for the acceptable bp occupancy + void SetBuspatchOccupancyLimits(float low, float high) { fBuspatchOccupancyLimits[0]=low; fBuspatchOccupancyLimits[1]=high; } + /// Retrieve low value of bp occupancy limit + Float_t BuspatchOccupancyLowLimit() const { return fBuspatchOccupancyLimits[0]; } + /// Retrieve high value of bp occupancy limit + Float_t BuspatchOccupancyHighLimit() const { return fBuspatchOccupancyLimits[1]; } + + /// Set the limits for the acceptable DE occupancy + void SetDEOccupancyLimits(float low, float high) { fDEOccupancyLimits[0]=low; fDEOccupancyLimits[1]=high; } + /// Retrieve low value of DE occupancy limit + Float_t DEOccupancyLowLimit() const { return fDEOccupancyLimits[0]; } + /// Retrieve high value of DE occupancy limit + Float_t DEOccupancyHighLimit() const { return fDEOccupancyLimits[1]; } + + /// Set the missing pad fraction limit + void SetMissingPadFractionLimit(float v) { fMissingPadFractionLimit = v; } + /// Get the missing pad fraction limit + Float_t MissingPadFractionLimit() const { return fMissingPadFractionLimit; } + + /// Set the fraction of buspatches outside the occupancy limits + void SetFractionOfBuspatchOutsideOccupancyLimit(float v) { fFractionOfBuspatchOutsideOccupancyLimit = v; } + /// Get the fraction of buspatches outside the occupancy limits + Float_t FractionOfBuspatchOutsideOccupancyLimit() const { return fFractionOfBuspatchOutsideOccupancyLimit; } + virtual void Print(Option_t *option = "") const; - private: void SetDefaultLimits(); - private: /// clustering mode: NOCLUSTERING, PRECLUSTER, PRECLUSTERV2, PRECLUSTERV3, COG,
@@ -308,7 +368,7 @@ class AliMUONRecoParam : public AliDetectorRecoParam
   
   Bool_t     fSaveFullClusterInESD; ///< kTRUE to save all cluster info (including pads) in ESD
   
-  /// calibration mode:  GAIN, NOGAIN, GAINCONSTANTCAPA
+  /// calibration mode:  GAIN, NOGAIN, GAINCONSTANTCAPA, INJECTIONGAIN
   TString    fCalibrationMode; ///<\brief calibration mode
   
   Int_t      fBypassSt45; ///< non-zero to use trigger tracks to generate "fake" clusters in St 4 and 5. Can be 0, 4, 5 or 45 only
@@ -334,13 +394,28 @@ class AliMUONRecoParam : public AliDetectorRecoParam
   
   Bool_t     fRemoveConnectedTracksInSt12; ///< kTRUE to remove tracks sharing cluster in station 1 and 2
   
+  Int_t      fMaxTriggerTracks; ///< maximum number of trigger tracks above which the tracking is cancelled
+  Int_t      fMaxTrackCandidates; ///< maximum number of track candidates above which the tracking abort
+  
+  Bool_t     fSelectTrackOnSlope; ///< select track candidates according to their slope (instead of their impact parameter)
+  
+  Double32_t fManuOccupancyLimits[2]; ///< low and high thresholds for manu occupancy cut
+  Double32_t fBuspatchOccupancyLimits[2]; ///< low and high thresholds for bus patch occupancy cut
+  Double32_t fDEOccupancyLimits[2]; ///< low and high thresholds for DE occupancy cut
+
+  Double32_t fMissingPadFractionLimit; ///< above this fraction, we consider we have too few pads alive...
+  Double32_t fFractionOfBuspatchOutsideOccupancyLimit; ///< above this limit, we consider we have too many buspatches out of the allowed occupancy range
+
+  Double32_t fAverageNoisePadCharge; ///< the (truncated, typically at 10%) mean of the sigma of the pedestals, in femto-coulomb
+  Double32_t fClusterChargeCut; ///< the cluster is cut if its charge is below fClusterChargeCut*LowestPadCharge()
+  
   // functions
   void SetLowFluxParam();
   void SetHighFluxParam();
   void SetCosmicParam();
+  void SetCalibrationParam();
   
-  
-  ClassDef(AliMUONRecoParam,11) // MUON reco parameters
+  ClassDef(AliMUONRecoParam,166) // MUON reco parameters
 };
 
 #endif