]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/AliHLTGlobalTrackMatcher.cxx
enable and disable detectors
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalTrackMatcher.cxx
1 //$Id$
2 /**************************************************************************
3  * This file is property of and copyright by the ALICE HLT Project        * 
4  * ALICE Experiment at CERN, All rights reserved.                         *
5  *                                                                        *
6  * Primary Authors: Svein Lindal (slindal@fys.uio.no)                 *
7  *                  for The ALICE HLT Project.                            *
8  *                                                                        *
9  * Permission to use, copy, modify and distribute this software and its   *
10  * documentation strictly for non-commercial purposes is hereby granted   *
11  * without fee, provided that the above copyright notice appears in all   *
12  * copies and that both the copyright notice and this permission notice   *
13  * appear in the supporting documentation. The authors make no claims     *
14  * about the suitability of this software for any purpose. It is          *
15  * provided "as is" without express or implied warranty.                  *
16  **************************************************************************/
17
18 /** @file   AliHLTGlobalTrackMatcher.cxx
19     @author Svein Lindal
20     @date   
21     @brief  The HLT class Matching Calorimeter clusters to TPC tracks
22 */
23
24 #include "AliHLTGlobalTrackMatcher.h"
25 //#include "AliESDCaloCluster.h"
26
27
28
29 #if __GNUC__>= 3
30 using namespace std;
31 #endif
32
33 ClassImp(AliHLTGlobalTrackMatcher)
34
35
36 AliHLTGlobalTrackMatcher::AliHLTGlobalTrackMatcher() :
37   fPhosMaxZ(0),
38   fPhosMaxX(0),
39   fEmcalMaxZ(0),
40   fEmcalMaxX(0),
41   fMatchDistance(0),
42   fPhosRadius(460),
43   fEmcalRadius(448)
44 {
45   //Default constructor
46   DoInit();
47 }
48
49 //_____________________________________________________________________________
50 AliHLTGlobalTrackMatcher::~AliHLTGlobalTrackMatcher()
51 {
52   //Destructor
53
54 }
55
56 void AliHLTGlobalTrackMatcher::DoInit( ) {
57   //See header file for documentation
58   //BALLE TODO: Change hardcoded values to something that is initialised through command line or something!!!
59
60
61   fMatchDistance = 40*40;
62
63   fPhosMaxX = 355 + TMath::Sqrt(fMatchDistance) + 30;
64   fPhosMaxZ = 64.+ TMath::Sqrt(fMatchDistance) + 30;
65
66   fEmcalMaxZ = 350 + TMath::Sqrt(fMatchDistance) + 30;
67   fEmcalMaxX = 3000;
68
69
70 }
71
72 Int_t AliHLTGlobalTrackMatcher::AddTrackToCluster(Int_t tId, TArrayI* matchedTracksArray, Bool_t bestMatch, Int_t nMatches){
73   //See header file for documentation
74     
75   matchedTracksArray->Set(matchedTracksArray->GetSize() + 1);
76   if ( bestMatch )  {
77     matchedTracksArray->AddAt(matchedTracksArray->At(0), matchedTracksArray->GetSize() - 1);
78     matchedTracksArray->AddAt(tId, 0);
79   } else {
80     matchedTracksArray->AddAt(tId, matchedTracksArray->GetSize() - 1);
81   }
82
83   return nMatches;
84 }
85
86 Int_t AliHLTGlobalTrackMatcher::AddTrackToCluster(Int_t tId, Int_t* matchArray, bool bestMatch, Int_t nMatches ){
87
88   //  HLTInfo("Adding track %d to cluster with %d previous matches", tId, nMatches);
89   
90   //BALLE TODO: remove hardcoded 9
91   if (nMatches > 9) {                                                   //BALLE this on tooo
92     HLTDebug("The number of matching tracks (%d) exceeds the array size of %d", nMatches, 9);
93     return 0;
94   }
95
96   if(bestMatch) {
97     matchArray[nMatches] = matchArray[0];
98     matchArray[0] = tId;
99   } else  {
100     matchArray[nMatches] = tId;
101   }
102   
103   return nMatches;
104
105 };
106
107
108 Bool_t AliHLTGlobalTrackMatcher::IsTrackCloseToDetector(AliExternalTrackParam * track, Double_t bz, Double_t fMaxX, Bool_t ySign, Double_t fMaxZ, Double_t dRadius) {
109   //See header file for documentation
110   
111   //Get track instersection with cylinder defined by detector radius
112   Double_t trackPosition[3] = {0, 0, 0};
113   if (! (track->GetXYZAt(dRadius, bz, trackPosition)) ) {
114     return kFALSE;
115   }
116
117   //HLTInfo("Track coordinate at R = PHOS radius %f %f %f", trackPosition[0],trackPosition[1],trackPosition[2]);
118
119
120   //Positive y for EMCAL, negative for PHOS
121   if(ySign) {
122     if (trackPosition[1] < 0 ) 
123       return kFALSE;
124   } else {
125     if (trackPosition[1] > 0 ) 
126       return kFALSE;
127   }
128   
129   
130   if ( (TMath::Abs(trackPosition[2]) > fMaxZ) ) 
131     return kFALSE;
132   
133   if (TMath::Abs(trackPosition[0]) > fMaxX )
134     return kFALSE;
135
136   // HLTInfo("kTRUE");
137   
138   return kTRUE;  
139 }