aodTrack->SetHitsPatternInTrigCh(esdMuTrack->GetHitsPatternInTrigCh());
UInt_t pattern = esdMuTrack->GetHitsPatternInTrigCh();
AliESDMuonTrack::AddEffInfo(pattern, 0, esdMuTrack->LoCircuit(), (AliESDMuonTrack::EAliTriggerChPatternFlag)0);
+ esdMuTrack->AddMuonTrigDevSignInfo(pattern);
aodTrack->SetMUONtrigHitsMapTrg(pattern);
aodTrack->SetMUONtrigHitsMapTrk(esdMuTrack->GetHitsPatternInTrigChTrk());
aodTrack->SetMuonClusterMap(esdMuTrack->GetMuonClusterMap());
aodTrack->SetHitsPatternInTrigCh(esdMuGlobalTrack->GetHitsPatternInTrigCh());
UInt_t pattern = esdMuGlobalTrack->GetHitsPatternInTrigCh();
AliESDMuonTrack::AddEffInfo(pattern, 0, esdMuGlobalTrack->GetLoCircuit(), (AliESDMuonTrack::EAliTriggerChPatternFlag)0);
+// esdMuGlobalTrack->AddTrigDevSignInfo(pattern);
aodTrack->SetMUONtrigHitsMapTrg(pattern);
aodTrack->SetMUONtrigHitsMapTrk(esdMuGlobalTrack->GetHitsPatternInTrigChTrk());
aodTrack->SetMuonClusterMap(esdMuGlobalTrack->GetMuonClusterMap());
return (nMatchedChambers >= 2);
}
+//______________________________________________________________________________
+Int_t AliAODTrack::GetMuonTrigDevSign() const
+{
+ /// Return the sign of the MTR deviation
+
+ Int_t signInfo = (Int_t)((fMUONtrigHitsMapTrg>>30)&0x3);
+ // Dummy value for old AODs which do not have the info
+ if ( signInfo == 0 ) return -999;
+ return signInfo - 2;
+}
+
//______________________________________________________________________________
Bool_t AliAODTrack::PropagateToDCA(const AliVVertex *vtx,
Double_t b, Double_t maxd, Double_t dz[2], Double_t covar[3])
void SetMuonClusterMap(UInt_t muonClusMap) { fITSMuonClusterMap = (fITSMuonClusterMap&0xfc00ffff)|((muonClusMap&0x3ff)<<16); }
void SetITSMuonClusterMap(UInt_t itsMuonClusMap) { fITSMuonClusterMap = itsMuonClusMap; }
void SetMUONtrigHitsMapTrg(UInt_t muonTrigHitsMap) { fMUONtrigHitsMapTrg = muonTrigHitsMap; }
- UInt_t GetMUONTrigHitsMapTrg() { return fMUONtrigHitsMapTrg; }
+ UInt_t GetMUONTrigHitsMapTrg() const { return fMUONtrigHitsMapTrg; }
void SetMUONtrigHitsMapTrk(UInt_t muonTrigHitsMap) { fMUONtrigHitsMapTrk = muonTrigHitsMap; }
- UInt_t GetMUONTrigHitsMapTrk() { return fMUONtrigHitsMapTrk; }
+ UInt_t GetMUONTrigHitsMapTrk() const { return fMUONtrigHitsMapTrk; }
+ Int_t GetMuonTrigDevSign() const;
Int_t GetMatchTrigger() const {return fITSMuonClusterMap>>30;}
// 0 Muon track does not match trigger
//_____________________________________________________________________________
Bool_t AliESDMuonTrack::MatchTriggerDigits(Bool_t fromTrack) const
{
- // return kTRUE if the track matches a digit on both planes of at least 2 trigger chambers
+ /// return kTRUE if the track matches a digit on both planes of at least 2 trigger chambers
UShort_t pattern = ( fromTrack ) ? fHitsPatternInTrigChTrk : fHitsPatternInTrigCh;
Int_t nMatchedChambers = 0;
return (nMatchedChambers >= 2);
}
+//_____________________________________________________________________________
+Int_t AliESDMuonTrack::GetMuonTrigDevSign() const
+{
+ /// Sign of the deviation provided by trigger
+ Int_t deviation = LoDev();
+ if ( deviation > 15 ) return 1;
+ else if ( deviation < 15 ) return -1;
+ else return 0;
+}
+
//_____________________________________________________________________________
void AliESDMuonTrack::AddClusterId(UInt_t clusterId)
{
/// Getting crossed board
return ( pattern >> 15 ) & 0xFF;
}
+
+
+//_____________________________________________________________________________
+void AliESDMuonTrack::AddMuonTrigDevSignInfo ( UInt_t &pattern ) const
+{
+ /// Add trigger deviation sign info to pattern
+ /// The info is stored in the 2 most significant digit:
+ /// info<<30
+ /// The information is:
+ /// 0x0 => no information present
+ /// 0x1 => negative deviation
+ /// 0x2 => undetermined sign
+ /// 0x3 => positive deviation
+
+ // First clean bits
+ pattern &= 0x3FFFFFFF;
+ // Then add info
+ UInt_t info = ((UInt_t)(GetMuonTrigDevSign()+2)&0x3)<<30;
+ pattern |= info;
+}
Int_t LoHpt(void) const { return fLocalTrigger >> 24 & 0x03; }
Int_t GetTriggerWithoutChamber(void) const { return fLocalTrigger >> 26 & 0xF; }
Bool_t TriggerFiredWithoutChamber(Int_t ich) const { return GetTriggerWithoutChamber() >> (3 - ich) & 0x1; }
+ Int_t GetMuonTrigDevSign() const;
// Get and Set methods for the hit strips pattern in the trigger chambers
UShort_t GetTriggerX1Pattern() const { return fX1Pattern; }
/// Getting crossed board
static Int_t GetCrossedBoard(UInt_t pattern);
+ void AddMuonTrigDevSignInfo(UInt_t& pattern) const;
+
AliESDEvent* GetESDEvent() const {return fESDEvent;}
void SetESDEvent(AliESDEvent* evt) {fESDEvent = evt;}