X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=MUON%2FAliMUONESDInterface.cxx;h=9bcedb8c75c3056e10ca5ed6d47a687bfabda40f;hb=00d46f2444b09f1c88a2268e2359bf584d9b2926;hp=0dc6afb82547166fd19415340da6f7bc030290d6;hpb=98606cfce1a09435d7e0979d8567676cc3e373ec;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONESDInterface.cxx b/MUON/AliMUONESDInterface.cxx index 0dc6afb8254..9bcedb8c75c 100644 --- a/MUON/AliMUONESDInterface.cxx +++ b/MUON/AliMUONESDInterface.cxx @@ -23,6 +23,7 @@ #include "AliMUONVDigit.h" #include "AliMUONVDigitStore.h" #include "AliMUONLocalTrigger.h" +#include "AliMUONTriggerTrack.h" #include "AliMUONVTriggerStore.h" #include "AliMUON2DMapIterator.h" #include "AliMUONTrackParam.h" @@ -35,7 +36,6 @@ #include "AliMpExMapIterator.h" #include "AliMpVSegmentation.h" #include "AliMpSegmentation.h" -#include "AliMpIntPair.h" #include "AliMpPad.h" #include "AliESDEvent.h" @@ -49,6 +49,8 @@ #include #include #include +#include +#include //----------------------------------------------------------------------------- /// \class AliMUONESDInterface @@ -141,7 +143,7 @@ void AliMUONESDInterface::Reset() } //_____________________________________________________________________________ -void AliMUONESDInterface::LoadEvent(AliESDEvent& esdEvent) +void AliMUONESDInterface::LoadEvent(AliESDEvent& esdEvent, Bool_t refit) { /// Extract MUON data from the given ESD event @@ -162,7 +164,7 @@ void AliMUONESDInterface::LoadEvent(AliESDEvent& esdEvent) if (!esdTrack->ContainTrackerData()) continue; // add it to track store - AliMUONTrack* track = Add(*esdTrack, *fTracks); + AliMUONTrack* track = Add(*esdTrack, *fTracks, refit); // prepare cluster map AliMpExMap* cMap = new AliMpExMap; @@ -435,7 +437,7 @@ AliMUONVCluster* AliMUONESDInterface::FindClusterInTrack(const AliMUONTrack& tra //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //_____________________________________________________________________________ -void AliMUONESDInterface::ResetTracker(const AliMUONRecoParam* recoParam) +void AliMUONESDInterface::ResetTracker(const AliMUONRecoParam* recoParam, Bool_t info) { /// Reset the MUON tracker using "recoParam" if provided. /// If not provided, will use Kalman filter + Smoother @@ -447,15 +449,28 @@ void AliMUONESDInterface::ResetTracker(const AliMUONRecoParam* recoParam) fgRecoParam = new AliMUONRecoParam(*recoParam); - }else { + if (info) cout<<"I-AliMUONESDInterface::ResetTracker: will refit tracks with provided RecoParam:"<SetTrackingMode("KALMAN"); - fgRecoParam->UseSmoother(kTRUE); - fgRecoParam->SetBendingVertexDispersion(10.); + cout<<"W-AliMUONESDInterface::ResetTracker: RecoParam not provided. Will use default LowFlux parametrization:"< Tracking mode = "<GetTrackingMode()<UseSmoother()) cout<<" --> Use Smoother"< Do not use smoother"< Vertex dispersion in bending direction = " + <GetBendingVertexDispersion()<<" cm"<GetField()) + cout<<"W-AliMUONESDInterface::ResetTracker: Magnetic field has not been set --> assume field is OFF"<First(); - firstTrackParam->SetZ(esdTrack.GetZUncorrected()); // reset the z to the one stored in ESD - AliMUONTrackExtrap::ExtrapToZCov(firstTrackParam,firstTrackParam->GetClusterPtr()->GetZ()); - // refit the track to get better parameters and covariances at each cluster (temporary disable track improvement) - if (!fgTracker) ResetTracker(); - if (!fgTracker->RefitTrack(track, kFALSE)) track.UpdateCovTrackParamAtCluster(); + if (refit) { + + AliMUONTrackParam *firstTrackParam = (AliMUONTrackParam*) track.GetTrackParamAtCluster()->First(); + AliMUONTrackParam paramSave(*firstTrackParam); + + if (!fgTracker) ResetTracker(); + + if (!fgTracker->RefitTrack(track, kFALSE) && track.GetGlobalChi2() < AliMUONTrack::MaxChi2()) { + *firstTrackParam = paramSave; + track.UpdateCovTrackParamAtCluster(); + } + + } } else { @@ -731,6 +752,9 @@ void AliMUONESDInterface::ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrac } + // set the MC label from ESD track + track.SetMCLabel(esdTrack.GetLabel()); + delete cluster; delete cStore; @@ -751,10 +775,10 @@ void AliMUONESDInterface::ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONLoca locTrg.SetLoCircuit(esdTrack.LoCircuit()); locTrg.SetLoStripX(esdTrack.LoStripX()); locTrg.SetLoStripY(esdTrack.LoStripY()); - locTrg.SetLoDev(esdTrack.LoDev()); + locTrg.SetDeviation(esdTrack.LoDev()); locTrg.SetLoLpt(esdTrack.LoLpt()); locTrg.SetLoHpt(esdTrack.LoHpt()); - locTrg.SetLoSdev(1); + locTrg.SetTriggerWithoutChamber(esdTrack.GetTriggerWithoutChamber()); locTrg.SetLoTrigY(1); locTrg.SetX1Pattern(esdTrack.GetTriggerX1Pattern()); locTrg.SetX2Pattern(esdTrack.GetTriggerX2Pattern()); @@ -779,6 +803,7 @@ void AliMUONESDInterface::ESDToMUON(const AliESDMuonCluster& esdCluster, AliMUON cluster.SetErrXY(esdCluster.GetErrX(),esdCluster.GetErrY()); cluster.SetCharge(esdCluster.GetCharge()); cluster.SetChi2(esdCluster.GetChi2()); + cluster.SetMCLabel(esdCluster.GetLabel()); if (esdCluster.PadsStored()) { Int_t nPads = esdCluster.GetNPads(); @@ -793,8 +818,13 @@ void AliMUONESDInterface::ESDToMUON(const AliESDMuonPad& esdPad, AliMUONVDigit& { /// Transfert data from ESDMuon pad to MUON digit + if (!AliMpSegmentation::Instance(kFALSE)) { + cout<<"E-AliMUONESDInterface::ESDToMUON: need mapping segmentation to convert ESD pad to MUON digit"<GetMpSegmentationByElectronics(esdPad.GetDetElemId(), esdPad.GetManuId()); - AliMpPad pad = seg->PadByLocation(AliMpIntPair(esdPad.GetManuId(), esdPad.GetManuChannel()), kFALSE); + AliMpPad pad = seg->PadByLocation(esdPad.GetManuId(), esdPad.GetManuChannel(), kFALSE); digit.Saturated(esdPad.IsSaturated()); digit.Used(kFALSE); @@ -802,7 +832,7 @@ void AliMUONESDInterface::ESDToMUON(const AliESDMuonPad& esdPad, AliMUONVDigit& digit.SetUniqueID(esdPad.GetUniqueID()); digit.SetCharge(esdPad.GetCharge()); digit.SetADC(esdPad.GetADC()); - digit.SetPadXY(pad.GetIndices().GetFirst(), pad.GetIndices().GetSecond()); + digit.SetPadXY(pad.GetIx(), pad.GetIy()); } @@ -831,6 +861,7 @@ void AliMUONESDInterface::MUONToESD(const AliMUONTrack& track, AliESDMuonTrack& esdTrack.SetUniqueID(track.GetUniqueID()); esdTrack.SetChi2(track.GetGlobalChi2()); esdTrack.SetNHit(track.GetNClusters()); + esdTrack.SetLabel(track.GetMCLabel()); // set param at first cluster AliMUONTrackParam* trackParam = static_cast((track.GetTrackParamAtCluster())->First()); @@ -884,7 +915,8 @@ void AliMUONESDInterface::MUONToESD(const AliMUONTrack& track, AliESDMuonTrack& } //_____________________________________________________________________________ -void AliMUONESDInterface::MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuonTrack& esdTrack, UInt_t trackId) +void AliMUONESDInterface::MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuonTrack& esdTrack, + UInt_t trackId, const AliMUONTriggerTrack* triggerTrack) { /// Build ghost ESDMuon track containing only informations about trigger track @@ -898,10 +930,10 @@ void AliMUONESDInterface::MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuo locTrg.LoStripY(), locTrg.GetDeviation(), locTrg.LoLpt(), - locTrg.LoHpt()); + locTrg.LoHpt(), + locTrg.GetTriggerWithoutChamber()); esdTrack.SetLocalTrigger(muonTrack.GetLocalTrigger()); esdTrack.SetChi2MatchTrigger(0.); - esdTrack.SetHitsPatternInTrigCh(0); esdTrack.SetTriggerX1Pattern(locTrg.GetX1Pattern()); esdTrack.SetTriggerY1Pattern(locTrg.GetY1Pattern()); esdTrack.SetTriggerX2Pattern(locTrg.GetX2Pattern()); @@ -910,7 +942,15 @@ void AliMUONESDInterface::MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuo esdTrack.SetTriggerY3Pattern(locTrg.GetY3Pattern()); esdTrack.SetTriggerX4Pattern(locTrg.GetX4Pattern()); esdTrack.SetTriggerY4Pattern(locTrg.GetY4Pattern()); - + UShort_t hitPattern = 0; + if(triggerTrack){ + hitPattern = triggerTrack->GetHitsPatternInTrigCh(); + esdTrack.SetHitsPatternInTrigCh(hitPattern); + esdTrack.SetThetaXUncorrected(triggerTrack->GetThetax()); + esdTrack.SetThetaYUncorrected(triggerTrack->GetThetay()); + esdTrack.SetNonBendingCoorUncorrected(triggerTrack->GetX11()); + esdTrack.SetBendingCoorUncorrected(triggerTrack->GetY11()); + } } //_____________________________________________________________________________ @@ -926,6 +966,7 @@ void AliMUONESDInterface::MUONToESD(const AliMUONVCluster& cluster, AliESDMuonCl esdCluster.SetErrXY(cluster.GetErrX(), cluster.GetErrY()); esdCluster.SetCharge(cluster.GetCharge()); esdCluster.SetChi2(cluster.GetChi2()); + esdCluster.SetLabel(cluster.GetMCLabel()); if (digits) { // transfert all data if required @@ -956,13 +997,14 @@ void AliMUONESDInterface::MUONToESD(const AliMUONVDigit& digit, AliESDMuonPad& e } //___________________________________________________________________________ -AliMUONTrack* AliMUONESDInterface::Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore) +AliMUONTrack* AliMUONESDInterface::Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore, Bool_t refit) { /// Create MUON track from ESDMuon track and add it to the store + /// Track parameters at each clusters are recomputed or not depending on the flag "refit" /// 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(esdTrack, *track); + ESDToMUON(esdTrack, *track, refit); return track; }