#ifndef ALIMUONVTRACKRECONSTRUCTOR_H
#define ALIMUONVTRACKRECONSTRUCTOR_H
#include <TObject.h>
class AliMUONTrack;
class AliMUONTrackParam;
class AliMUONVCluster;
class AliMUONTriggerTrack;
class AliMUONTrackHitPattern;
class AliMUONVClusterServer;
class AliMUONVClusterStore;
class AliMUONVTrackStore;
class AliMUONVTriggerTrackStore;
class AliMUONVTriggerStore;
class AliMUONGeometryTransformer;
class AliMUONDigitMaker;
class AliMUONTriggerCircuit;
class TClonesArray;
class AliMUONRecoParam;
class AliMUONLocalTrigger;
class AliMUONVTrackReconstructor : public TObject {
public:
AliMUONVTrackReconstructor(const AliMUONRecoParam* recoParam, AliMUONVClusterServer* clusterServer,
const AliMUONGeometryTransformer* transformer);
virtual ~AliMUONVTrackReconstructor();
void EventReconstruct(AliMUONVClusterStore& clusterStore,
AliMUONVTrackStore& trackStore);
void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit,
const AliMUONVTriggerStore& triggerStore,
AliMUONVTriggerTrackStore& triggerTrackStore);
void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore,
const AliMUONVTriggerTrackStore& triggerTrackStore,
const AliMUONVTriggerStore& triggerStore,
const AliMUONTrackHitPattern& trackHitPattern);
const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
virtual Bool_t RefitTrack(AliMUONTrack &track, Bool_t enableImprovement = kTRUE) = 0;
Bool_t TriggerToTrack(const AliMUONTriggerCircuit& circuit,
const AliMUONLocalTrigger& locTrg,
AliMUONTriggerTrack& triggerTrack,
UChar_t globalTriggerPattern = 0);
protected:
TClonesArray *fRecTracksPtr;
Int_t fNRecTracks;
AliMUONVClusterServer* fClusterServer;
const AliMUONRecoParam* fkRecoParam;
const AliMUONGeometryTransformer* fkTransformer;
Double_t* fMaxMCSAngle2;
AliMUONVTrackReconstructor (const AliMUONVTrackReconstructor& rhs);
AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs);
virtual Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore) = 0;
virtual Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore) = 0;
virtual Bool_t FollowTracks(AliMUONVClusterStore& clusterStore) = 0;
virtual Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore) = 0;
void ImproveTracks();
virtual void ImproveTrack(AliMUONTrack &track) = 0;
void Finalize();
virtual Bool_t FinalizeTrack(AliMUONTrack &track) = 0;
void DiscardMonoCathodClusters();
void ChangeMonoCathodClusterRes(AliMUONTrack &track);
Bool_t IsAcceptable(AliMUONTrackParam &trackParam);
TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2);
void RemoveUsedSegments(TClonesArray& segments);
void RemoveIdenticalTracks();
void RemoveDoubleTracks();
void RemoveBadTracks();
void RemoveConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all);
void TagConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all);
void AskForNewClustersInStation(const AliMUONTrackParam &trackParam,
AliMUONVClusterStore& clusterStore, Int_t station);
void AskForNewClustersInChamber(const AliMUONTrackParam &trackParam,
AliMUONVClusterStore& clusterStore, Int_t chamber);
Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMUONVCluster* cluster,
AliMUONTrackParam &trackParamAtCluster, Bool_t updatePropagator = kFALSE);
Bool_t TryOneClusterFast(const AliMUONTrackParam &trackParam, const AliMUONVCluster* cluster);
Double_t TryTwoClustersFast(const AliMUONTrackParam &trackParamAtCluster1, AliMUONVCluster* cluster2,
AliMUONTrackParam &trackParamAtCluster2);
Bool_t FollowLinearTrackInChamber(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber);
Bool_t FollowLinearTrackInStation(AliMUONTrack &trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation);
private:
void ResetTracks();
ClassDef(AliMUONVTrackReconstructor, 0)
};
#endif
AliMUONVTrackReconstructor.h:1 AliMUONVTrackReconstructor.h:2 AliMUONVTrackReconstructor.h:3 AliMUONVTrackReconstructor.h:4 AliMUONVTrackReconstructor.h:5 AliMUONVTrackReconstructor.h:6 AliMUONVTrackReconstructor.h:7 AliMUONVTrackReconstructor.h:8 AliMUONVTrackReconstructor.h:9 AliMUONVTrackReconstructor.h:10 AliMUONVTrackReconstructor.h:11 AliMUONVTrackReconstructor.h:12 AliMUONVTrackReconstructor.h:13 AliMUONVTrackReconstructor.h:14 AliMUONVTrackReconstructor.h:15 AliMUONVTrackReconstructor.h:16 AliMUONVTrackReconstructor.h:17 AliMUONVTrackReconstructor.h:18 AliMUONVTrackReconstructor.h:19 AliMUONVTrackReconstructor.h:20 AliMUONVTrackReconstructor.h:21 AliMUONVTrackReconstructor.h:22 AliMUONVTrackReconstructor.h:23 AliMUONVTrackReconstructor.h:24 AliMUONVTrackReconstructor.h:25 AliMUONVTrackReconstructor.h:26 AliMUONVTrackReconstructor.h:27 AliMUONVTrackReconstructor.h:28 AliMUONVTrackReconstructor.h:29 AliMUONVTrackReconstructor.h:30 AliMUONVTrackReconstructor.h:31 AliMUONVTrackReconstructor.h:32 AliMUONVTrackReconstructor.h:33 AliMUONVTrackReconstructor.h:34 AliMUONVTrackReconstructor.h:35 AliMUONVTrackReconstructor.h:36 AliMUONVTrackReconstructor.h:37 AliMUONVTrackReconstructor.h:38 AliMUONVTrackReconstructor.h:39 AliMUONVTrackReconstructor.h:40 AliMUONVTrackReconstructor.h:41 AliMUONVTrackReconstructor.h:42 AliMUONVTrackReconstructor.h:43 AliMUONVTrackReconstructor.h:44 AliMUONVTrackReconstructor.h:45 AliMUONVTrackReconstructor.h:46 AliMUONVTrackReconstructor.h:47 AliMUONVTrackReconstructor.h:48 AliMUONVTrackReconstructor.h:49 AliMUONVTrackReconstructor.h:50 AliMUONVTrackReconstructor.h:51 AliMUONVTrackReconstructor.h:52 AliMUONVTrackReconstructor.h:53 AliMUONVTrackReconstructor.h:54 AliMUONVTrackReconstructor.h:55 AliMUONVTrackReconstructor.h:56 AliMUONVTrackReconstructor.h:57 AliMUONVTrackReconstructor.h:58 AliMUONVTrackReconstructor.h:59 AliMUONVTrackReconstructor.h:60 AliMUONVTrackReconstructor.h:61 AliMUONVTrackReconstructor.h:62 AliMUONVTrackReconstructor.h:63 AliMUONVTrackReconstructor.h:64 AliMUONVTrackReconstructor.h:65 AliMUONVTrackReconstructor.h:66 AliMUONVTrackReconstructor.h:67 AliMUONVTrackReconstructor.h:68 AliMUONVTrackReconstructor.h:69 AliMUONVTrackReconstructor.h:70 AliMUONVTrackReconstructor.h:71 AliMUONVTrackReconstructor.h:72 AliMUONVTrackReconstructor.h:73 AliMUONVTrackReconstructor.h:74 AliMUONVTrackReconstructor.h:75 AliMUONVTrackReconstructor.h:76 AliMUONVTrackReconstructor.h:77 AliMUONVTrackReconstructor.h:78 AliMUONVTrackReconstructor.h:79 AliMUONVTrackReconstructor.h:80 AliMUONVTrackReconstructor.h:81 AliMUONVTrackReconstructor.h:82 AliMUONVTrackReconstructor.h:83 AliMUONVTrackReconstructor.h:84 AliMUONVTrackReconstructor.h:85 AliMUONVTrackReconstructor.h:86 AliMUONVTrackReconstructor.h:87 AliMUONVTrackReconstructor.h:88 AliMUONVTrackReconstructor.h:89 AliMUONVTrackReconstructor.h:90 AliMUONVTrackReconstructor.h:91 AliMUONVTrackReconstructor.h:92 AliMUONVTrackReconstructor.h:93 AliMUONVTrackReconstructor.h:94 AliMUONVTrackReconstructor.h:95 AliMUONVTrackReconstructor.h:96 AliMUONVTrackReconstructor.h:97 AliMUONVTrackReconstructor.h:98 AliMUONVTrackReconstructor.h:99 AliMUONVTrackReconstructor.h:100 AliMUONVTrackReconstructor.h:101 AliMUONVTrackReconstructor.h:102 AliMUONVTrackReconstructor.h:103 AliMUONVTrackReconstructor.h:104 AliMUONVTrackReconstructor.h:105 AliMUONVTrackReconstructor.h:106 AliMUONVTrackReconstructor.h:107 AliMUONVTrackReconstructor.h:108 AliMUONVTrackReconstructor.h:109 AliMUONVTrackReconstructor.h:110 AliMUONVTrackReconstructor.h:111 AliMUONVTrackReconstructor.h:112 AliMUONVTrackReconstructor.h:113 AliMUONVTrackReconstructor.h:114 AliMUONVTrackReconstructor.h:115 AliMUONVTrackReconstructor.h:116 AliMUONVTrackReconstructor.h:117 AliMUONVTrackReconstructor.h:118 AliMUONVTrackReconstructor.h:119 AliMUONVTrackReconstructor.h:120 AliMUONVTrackReconstructor.h:121 AliMUONVTrackReconstructor.h:122 AliMUONVTrackReconstructor.h:123 AliMUONVTrackReconstructor.h:124 AliMUONVTrackReconstructor.h:125 AliMUONVTrackReconstructor.h:126 AliMUONVTrackReconstructor.h:127 AliMUONVTrackReconstructor.h:128 AliMUONVTrackReconstructor.h:129 AliMUONVTrackReconstructor.h:130 AliMUONVTrackReconstructor.h:131 AliMUONVTrackReconstructor.h:132 AliMUONVTrackReconstructor.h:133 AliMUONVTrackReconstructor.h:134