]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RALICE/icepack/IceDwalk.h
02-dec-2007 NvE New memberfunctions GetNstrings() introduced in IceEvent.
[u/mrichter/AliRoot.git] / RALICE / icepack / IceDwalk.h
1 #ifndef IceDwalk_h
2 #define IceDwalk_h
3
4 // Copyright(c) 2003, IceCube Experiment at the South Pole, All rights reserved.
5 // See cxx source for full Copyright notice.
6
7 // $Id$
8
9 #include "TROOT.h"
10 #include "TTask.h"
11 #include "TString.h"
12 #include "TArrayI.h"
13
14 #include "AliJob.h"
15 #include "AliSample.h"
16 #include "IceEvent.h"
17 #include "IceGOM.h"
18
19 class IceDwalk : public TTask
20 {
21  public :
22   IceDwalk(const char* name="IceDwalk",const char* title="Direct walk reconstruction"); // Constructor
23   virtual ~IceDwalk();                                    // Destructor
24   virtual void Exec(Option_t* opt);                       // Direct walk reconstruction
25   void SetDmin(Float_t d,TString s="A");                  // Set minimum hit distance to form a track element
26   void SetDtmarg(Int_t dt,TString s="A");                 // Set maximum hit time difference margin for track elements
27   void SetMaxDhit(Float_t d,TString s="A");               // Set maximum distance (in scat. length) for hit association 
28   void SetTangmax(Float_t ang,TString s="A");             // Set max. angular separation for track candidate clustering into jets
29   void SetTdistmax(Float_t d,TString s="A",Int_t invol=1);// Set maximum track distance for track candidate clustering
30   void SetJangmax(Float_t ang,TString s="A",Int_t iter=1);// Set max. angular separation for jet merging into 1 single track
31   void SetJdistmax(Float_t d,TString s="A",Int_t invol=1);// Set maximum jet distance for jet merging
32   void SetMaxMod(Int_t nmax,TString s="A");               // Set max. number of good fired (D)OMs for events to be processed
33   void SetMinMod(Int_t nmin,TString s="A");               // Set min. number of good fired (D)OMs for events to be processed
34   void SetMaxHits(Int_t nmax,TString s="A");              // Set max. number of good hits per (D)OM to be processed
35   void SetVgroupUsage(Int_t flag,TString s="A");          // (De)activate usage of distinct phase and group velocities
36   void SetAsType(Int_t flag,TString s);                   // Select # assoc. hits or strings for quality indicator
37   void SetTrackName(TString s);                           // Set (alternative) name for the produced first guess tracks
38   void SetCharge(Float_t charge);                         // Set user defined charge for the produced first guess tracks
39
40  protected :
41   IceEvent* fEvt;     // Pointer to the event structure
42   Float_t fDminA;     // Minimum Amanda OM hit distance (in m) to form a track element 
43   Float_t fDminI;     // Minimum InIce DOM hit distance (in m) to form a track element 
44   Int_t fDtmargA;     // Maximum Amanda OM hit time difference margin (in ns) for track elements
45   Int_t fDtmargI;     // Maximum InIce DOM hit time difference margin (in ns) for track elements
46   Float_t fMaxdhitA;  // Maximum Amanda OM hit distance (in scat. length) for hit association
47   Float_t fMaxdhitI;  // Maximum InIce DOM hit distance (in scat. length) for hit association
48   Float_t fTangmaxA;  // Amanda angular separation (in deg) within which track candidates are clustered in a jet
49   Float_t fTangmaxI;  // InIce angular separation (in deg) within which track candidates are clustered in a jet
50   Float_t fTdistmaxA; // Maximum Amanda track distance (in m) for track candidate clustering
51   Float_t fTdistmaxI; // Maximum InIce track distance (in m) for track candidate clustering
52   Int_t fTinvolA;     // Amanda flag to denote maximum track distance testing inside/outside detector volume
53   Int_t fTinvolI;     // InIce flag to denote maximum track distance testing inside/outside detector volume
54   Float_t fJangmaxA;  // Amanda angular separation (in deg) within which jets are merged into 1 single track
55   Float_t fJangmaxI;  // InIce angular separation (in deg) within which jets are merged into 1 single track
56   Int_t fJiterateA;   // Amanda flag to indicate iteration in the jet merging process
57   Int_t fJiterateI;   // InIce flag to indicate iteration in the jet merging process
58   Float_t fJdistmaxA; // Amanda maximum jet distance (in m) for jet merging
59   Float_t fJdistmaxI; // InIce maximum jet distance (in m) for jet merging
60   Int_t fJinvolA;     // Amanda flag to denote maximum jet distance testing inside/outside detector volume
61   Int_t fJinvolI;     // InIce flag to denote maximum jet distance testing inside/outside detector volume
62   Int_t fMaxmodA;     // The max. number of good fired Amanda OMs for events to get processed
63   Int_t fMaxmodI;     // The max. number of good fired InIce DOMs for events to get processed
64   Int_t fMinmodA;     // The min. number of good fired Amanda OMs for events to get processed
65   Int_t fMinmodI;     // The min. number of good fired InIce DOMs for events to get processed
66   Int_t fMaxhitsA;    // The maximum number of good hits per Amanda OM to be processed
67   Int_t fMaxhitsI;    // The maximum number of good hits per InIce DOM to be processed
68   Int_t fVgroupA;     // Amanda flag to indicate usage of distinct phase and group velocities
69   Int_t fVgroupI;     // InIce flag to indicate usage of distinct phase and group velocities
70   Int_t fAsTypeA;     // Amanda flag to indicate usage of # assoc. hits or strings for quality
71   Int_t fAsTypeI;     // InIce flag to indicate usage of # assoc. hits or strings for quality
72   TString fTrackname; // The name identifier for the produced first guess tracks
73   Float_t fCharge;    // User defined charge of the produced first guess tracks
74
75   virtual void Amanda(); // Direct walk reconstruction for Amanda OM signals
76   virtual void InIce();  // Direct walk reconstruction for InIce DOM signals
77   virtual void AssociateHits(TObjArray& tes,TObjArray& hits,Int_t vgroup,Float_t maxdhit,Int_t astype,Float_t& qmax);// Hit association
78   virtual void SelectQvalue(TObjArray& tes,Int_t astype,Float_t qmax); // TC selection via Q-value
79   virtual void ClusterTracks(TObjArray& tes,TObjArray& jets,Float_t tangmax,Int_t tinvol,Float_t tdistmax,Int_t astype,Float_t qmax);// Track clustering  
80   virtual void MergeJets(TObjArray& jets,Float_t jangmax,Float_t jdistmax,Int_t jinvol,Int_t jiterate,Int_t astype);// Jet Merging
81   virtual void StoreTracks(TObjArray& jets,Float_t jangmax,TString name,TString title); // Final track storage
82
83  ClassDef(IceDwalk,10) // TTask derived class to perform (improved) direct walk reconstruction
84 };
85 #endif