#include "AliMUONTriggerTrack.h"
#include "AliMUONTrackReconstructor.h"
#include "TString.h"
#include <Riostream.h>
#include "AliLog.h"
using std::endl;
using std::cout;
ClassImp(AliMUONTriggerTrack)
AliMUONTriggerTrack::AliMUONTriggerTrack()
: TObject(),
fx11(0),
fy11(0),
fz11(0.),
fz21(0.),
fSlopeX(0),
fSlopeY(0),
floTrgNum(0),
fGTPattern(0),
fPtCutLevel(0),
fHitsPatternInTrigCh(0),
fCovariances(0x0)
{
AliDebug(5,Form("this=%p",this));
}
AliMUONTriggerTrack::AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t z11, Float_t z21, Float_t slopeX, Float_t slopeY, Int_t loTrgNum, Long_t theGTPattern, Int_t ptCutLevel)
: TObject(),
fx11(x11),
fy11(y11),
fz11(z11),
fz21(z21),
fSlopeX(slopeX),
fSlopeY(slopeY),
floTrgNum(loTrgNum),
fGTPattern(theGTPattern),
fPtCutLevel(ptCutLevel),
fHitsPatternInTrigCh(0),
fCovariances(0x0)
{
AliDebug(5,Form("this=%p x11=%f y11=%f z11=%f z21=%f slopeX=%f slopeY=%f loTrgNum=%d GTPattern=%ld HitsPatternInTrigCh %i",
this,x11,y11,z11,z21,slopeX,slopeY,loTrgNum,theGTPattern,fHitsPatternInTrigCh));
}
AliMUONTriggerTrack::~AliMUONTriggerTrack()
{
AliDebug(5,Form("this=%p",this));
if (fCovariances) {
delete fCovariances;
fCovariances = 0x0;
}
}
AliMUONTriggerTrack::AliMUONTriggerTrack (const AliMUONTriggerTrack& theMUONTriggerTrack)
: TObject(theMUONTriggerTrack),
fx11(theMUONTriggerTrack.fx11),
fy11(theMUONTriggerTrack.fy11),
fz11(theMUONTriggerTrack.fz11),
fz21(theMUONTriggerTrack.fz21),
fSlopeX(theMUONTriggerTrack.fSlopeX),
fSlopeY(theMUONTriggerTrack.fSlopeY),
floTrgNum(theMUONTriggerTrack.floTrgNum),
fGTPattern(theMUONTriggerTrack.fGTPattern),
fPtCutLevel(theMUONTriggerTrack.fPtCutLevel),
fHitsPatternInTrigCh(theMUONTriggerTrack.fHitsPatternInTrigCh),
fCovariances(0x0)
{
if (theMUONTriggerTrack.fCovariances) fCovariances = new TMatrixD(*(theMUONTriggerTrack.fCovariances));
AliDebug(5,Form("this=%p copy ctor",this));
}
AliMUONTriggerTrack & AliMUONTriggerTrack::operator=(const AliMUONTriggerTrack&
theMUONTriggerTrack)
{
if (this == &theMUONTriggerTrack)
return *this;
TObject::operator=(theMUONTriggerTrack);
fx11 = theMUONTriggerTrack.fx11;
fy11 = theMUONTriggerTrack.fy11;
fz11 = theMUONTriggerTrack.fz11;
fz21 = theMUONTriggerTrack.fz21;
fSlopeX = theMUONTriggerTrack.fSlopeX;
fSlopeY = theMUONTriggerTrack.fSlopeY;
floTrgNum = theMUONTriggerTrack.floTrgNum;
fGTPattern = theMUONTriggerTrack.fGTPattern;
fHitsPatternInTrigCh = theMUONTriggerTrack.fHitsPatternInTrigCh;
if (theMUONTriggerTrack.fCovariances) {
if (fCovariances) *fCovariances = *(theMUONTriggerTrack.fCovariances);
else fCovariances = new TMatrixD(*(theMUONTriggerTrack.fCovariances));
} else {
delete fCovariances;
fCovariances = 0x0;
}
return *this;
}
void AliMUONTriggerTrack::Clear(Option_t* )
{
delete fCovariances;
fCovariances = 0x0;
}
void
AliMUONTriggerTrack::Print(Option_t* opt) const
{
TString optString(opt);
optString.ToUpper();
if ( optString.Contains("FULL") ) optString = "PARAM COV";
if ( optString.Contains("PARAM"))
cout << Form("(X,Y,Z)11=(%7.2f,%7.2f,%7.2f) Z21=%7.2f Slope(X,Y)=(%7.2f,%7.2f) LocalBoard #%3d GlobalTriggerPattern %x HitsPatternInTrigCh %x",
fx11,fy11,fz11,fz21,fSlopeX,fSlopeY,floTrgNum,fGTPattern,fHitsPatternInTrigCh) << endl;
if ( optString.Contains("COV") ){
if ( ! fCovariances ) cout << "Covariances not initialized " << endl;
else fCovariances->Print();
}
}
void AliMUONTriggerTrack::SetCovariances(const TMatrixD& covariances)
{
if (fCovariances) *fCovariances = covariances;
else fCovariances = new TMatrixD(covariances);
}
void AliMUONTriggerTrack::SetCovariances(const Double_t matrix[3][3])
{
if (fCovariances) fCovariances->SetMatrixArray(&(matrix[0][0]));
else fCovariances = new TMatrixD(3,3,&(matrix[0][0]));
}
const TMatrixD& AliMUONTriggerTrack::GetCovariances() const
{
if (!fCovariances) {
fCovariances = new TMatrixD(3,3);
fCovariances->Zero();
}
return *fCovariances;
}
Bool_t AliMUONTriggerTrack::Match(AliMUONTriggerTrack &track,
Double_t sigmaCut) const
{
Bool_t hasCov1 = ( GetCovariances().NonZeros() != 0 );
Bool_t hasCov2 = ( track.GetCovariances().NonZeros() != 0 );
const AliMUONTriggerTrack* trackToExtrap = ( hasCov2 ) ? &track : this;
const AliMUONTriggerTrack* fixedTrack = ( hasCov2 ) ? this : &track;
TMatrixD paramDiff(3,1);
Double_t deltaZ = fixedTrack->GetZ11() - trackToExtrap->GetZ11();
paramDiff(0,0) = fixedTrack->GetX11() - trackToExtrap->GetX11();
paramDiff(1,0) = fixedTrack->GetY11() - ( trackToExtrap->GetY11() + trackToExtrap->GetSlopeY() * deltaZ );
paramDiff(2,0) = fixedTrack->GetSlopeY() - trackToExtrap->GetSlopeY();
Double_t chi2 = 0.;
TMatrixD cov1(fixedTrack->GetCovariances());
TMatrixD cov2(trackToExtrap->GetCovariances());
if ( deltaZ != 0 ) {
if ( hasCov1 || hasCov2 ){
TMatrixD jacob(3,3);
jacob.UnitMatrix();
jacob(1,2) = deltaZ;
TMatrixD tmp(trackToExtrap->GetCovariances(),TMatrixD::kMultTranspose,jacob);
TMatrixD tmp2(jacob,TMatrixD::kMult,tmp);
cov2 = tmp2;
}
}
AliDebug(3, Form("track1 Y11 %f track2 Y11: %f (Z11 %f) -> %f (Z11 %f)", fixedTrack->GetY11(), trackToExtrap->GetY11(), trackToExtrap->GetZ11(), trackToExtrap->GetY11() + trackToExtrap->GetSlopeY() * deltaZ, fixedTrack->GetZ11()));
TMatrixD sumCov(cov1,TMatrixD::kPlus,cov2);
if (sumCov.Determinant() != 0) {
sumCov.Invert();
TMatrixD tmp(sumCov,TMatrixD::kMult,paramDiff);
TMatrixD chi2M(paramDiff,TMatrixD::kTransposeMult,tmp);
chi2 = chi2M(0,0);
} else {
AliWarning(" Determinant = 0");
Double_t sigma2 = 0.;
for (Int_t iVar = 0; iVar < 3; iVar++) {
sigma2 = cov1(iVar,iVar) + cov2(iVar,iVar);
chi2 += paramDiff(iVar,0) * paramDiff(iVar,0) / sigma2;
}
}
if ( chi2/3 > sigmaCut * sigmaCut )
return kFALSE;
return kTRUE;
}
AliMUONTriggerTrack.cxx:1 AliMUONTriggerTrack.cxx:2 AliMUONTriggerTrack.cxx:3 AliMUONTriggerTrack.cxx:4 AliMUONTriggerTrack.cxx:5 AliMUONTriggerTrack.cxx:6 AliMUONTriggerTrack.cxx:7 AliMUONTriggerTrack.cxx:8 AliMUONTriggerTrack.cxx:9 AliMUONTriggerTrack.cxx:10 AliMUONTriggerTrack.cxx:11 AliMUONTriggerTrack.cxx:12 AliMUONTriggerTrack.cxx:13 AliMUONTriggerTrack.cxx:14 AliMUONTriggerTrack.cxx:15 AliMUONTriggerTrack.cxx:16 AliMUONTriggerTrack.cxx:17 AliMUONTriggerTrack.cxx:18 AliMUONTriggerTrack.cxx:19 AliMUONTriggerTrack.cxx:20 AliMUONTriggerTrack.cxx:21 AliMUONTriggerTrack.cxx:22 AliMUONTriggerTrack.cxx:23 AliMUONTriggerTrack.cxx:24 AliMUONTriggerTrack.cxx:25 AliMUONTriggerTrack.cxx:26 AliMUONTriggerTrack.cxx:27 AliMUONTriggerTrack.cxx:28 AliMUONTriggerTrack.cxx:29 AliMUONTriggerTrack.cxx:30 AliMUONTriggerTrack.cxx:31 AliMUONTriggerTrack.cxx:32 AliMUONTriggerTrack.cxx:33 AliMUONTriggerTrack.cxx:34 AliMUONTriggerTrack.cxx:35 AliMUONTriggerTrack.cxx:36 AliMUONTriggerTrack.cxx:37 AliMUONTriggerTrack.cxx:38 AliMUONTriggerTrack.cxx:39 AliMUONTriggerTrack.cxx:40 AliMUONTriggerTrack.cxx:41 AliMUONTriggerTrack.cxx:42 AliMUONTriggerTrack.cxx:43 AliMUONTriggerTrack.cxx:44 AliMUONTriggerTrack.cxx:45 AliMUONTriggerTrack.cxx:46 AliMUONTriggerTrack.cxx:47 AliMUONTriggerTrack.cxx:48 AliMUONTriggerTrack.cxx:49 AliMUONTriggerTrack.cxx:50 AliMUONTriggerTrack.cxx:51 AliMUONTriggerTrack.cxx:52 AliMUONTriggerTrack.cxx:53 AliMUONTriggerTrack.cxx:54 AliMUONTriggerTrack.cxx:55 AliMUONTriggerTrack.cxx:56 AliMUONTriggerTrack.cxx:57 AliMUONTriggerTrack.cxx:58 AliMUONTriggerTrack.cxx:59 AliMUONTriggerTrack.cxx:60 AliMUONTriggerTrack.cxx:61 AliMUONTriggerTrack.cxx:62 AliMUONTriggerTrack.cxx:63 AliMUONTriggerTrack.cxx:64 AliMUONTriggerTrack.cxx:65 AliMUONTriggerTrack.cxx:66 AliMUONTriggerTrack.cxx:67 AliMUONTriggerTrack.cxx:68 AliMUONTriggerTrack.cxx:69 AliMUONTriggerTrack.cxx:70 AliMUONTriggerTrack.cxx:71 AliMUONTriggerTrack.cxx:72 AliMUONTriggerTrack.cxx:73 AliMUONTriggerTrack.cxx:74 AliMUONTriggerTrack.cxx:75 AliMUONTriggerTrack.cxx:76 AliMUONTriggerTrack.cxx:77 AliMUONTriggerTrack.cxx:78 AliMUONTriggerTrack.cxx:79 AliMUONTriggerTrack.cxx:80 AliMUONTriggerTrack.cxx:81 AliMUONTriggerTrack.cxx:82 AliMUONTriggerTrack.cxx:83 AliMUONTriggerTrack.cxx:84 AliMUONTriggerTrack.cxx:85 AliMUONTriggerTrack.cxx:86 AliMUONTriggerTrack.cxx:87 AliMUONTriggerTrack.cxx:88 AliMUONTriggerTrack.cxx:89 AliMUONTriggerTrack.cxx:90 AliMUONTriggerTrack.cxx:91 AliMUONTriggerTrack.cxx:92 AliMUONTriggerTrack.cxx:93 AliMUONTriggerTrack.cxx:94 AliMUONTriggerTrack.cxx:95 AliMUONTriggerTrack.cxx:96 AliMUONTriggerTrack.cxx:97 AliMUONTriggerTrack.cxx:98 AliMUONTriggerTrack.cxx:99 AliMUONTriggerTrack.cxx:100 AliMUONTriggerTrack.cxx:101 AliMUONTriggerTrack.cxx:102 AliMUONTriggerTrack.cxx:103 AliMUONTriggerTrack.cxx:104 AliMUONTriggerTrack.cxx:105 AliMUONTriggerTrack.cxx:106 AliMUONTriggerTrack.cxx:107 AliMUONTriggerTrack.cxx:108 AliMUONTriggerTrack.cxx:109 AliMUONTriggerTrack.cxx:110 AliMUONTriggerTrack.cxx:111 AliMUONTriggerTrack.cxx:112 AliMUONTriggerTrack.cxx:113 AliMUONTriggerTrack.cxx:114 AliMUONTriggerTrack.cxx:115 AliMUONTriggerTrack.cxx:116 AliMUONTriggerTrack.cxx:117 AliMUONTriggerTrack.cxx:118 AliMUONTriggerTrack.cxx:119 AliMUONTriggerTrack.cxx:120 AliMUONTriggerTrack.cxx:121 AliMUONTriggerTrack.cxx:122 AliMUONTriggerTrack.cxx:123 AliMUONTriggerTrack.cxx:124 AliMUONTriggerTrack.cxx:125 AliMUONTriggerTrack.cxx:126 AliMUONTriggerTrack.cxx:127 AliMUONTriggerTrack.cxx:128 AliMUONTriggerTrack.cxx:129 AliMUONTriggerTrack.cxx:130 AliMUONTriggerTrack.cxx:131 AliMUONTriggerTrack.cxx:132 AliMUONTriggerTrack.cxx:133 AliMUONTriggerTrack.cxx:134 AliMUONTriggerTrack.cxx:135 AliMUONTriggerTrack.cxx:136 AliMUONTriggerTrack.cxx:137 AliMUONTriggerTrack.cxx:138 AliMUONTriggerTrack.cxx:139 AliMUONTriggerTrack.cxx:140 AliMUONTriggerTrack.cxx:141 AliMUONTriggerTrack.cxx:142 AliMUONTriggerTrack.cxx:143 AliMUONTriggerTrack.cxx:144 AliMUONTriggerTrack.cxx:145 AliMUONTriggerTrack.cxx:146 AliMUONTriggerTrack.cxx:147 AliMUONTriggerTrack.cxx:148 AliMUONTriggerTrack.cxx:149 AliMUONTriggerTrack.cxx:150 AliMUONTriggerTrack.cxx:151 AliMUONTriggerTrack.cxx:152 AliMUONTriggerTrack.cxx:153 AliMUONTriggerTrack.cxx:154 AliMUONTriggerTrack.cxx:155 AliMUONTriggerTrack.cxx:156 AliMUONTriggerTrack.cxx:157 AliMUONTriggerTrack.cxx:158 AliMUONTriggerTrack.cxx:159 AliMUONTriggerTrack.cxx:160 AliMUONTriggerTrack.cxx:161 AliMUONTriggerTrack.cxx:162 AliMUONTriggerTrack.cxx:163 AliMUONTriggerTrack.cxx:164 AliMUONTriggerTrack.cxx:165 AliMUONTriggerTrack.cxx:166 AliMUONTriggerTrack.cxx:167 AliMUONTriggerTrack.cxx:168 AliMUONTriggerTrack.cxx:169 AliMUONTriggerTrack.cxx:170 AliMUONTriggerTrack.cxx:171 AliMUONTriggerTrack.cxx:172 AliMUONTriggerTrack.cxx:173 AliMUONTriggerTrack.cxx:174 AliMUONTriggerTrack.cxx:175 AliMUONTriggerTrack.cxx:176 AliMUONTriggerTrack.cxx:177 AliMUONTriggerTrack.cxx:178 AliMUONTriggerTrack.cxx:179 AliMUONTriggerTrack.cxx:180 AliMUONTriggerTrack.cxx:181 AliMUONTriggerTrack.cxx:182 AliMUONTriggerTrack.cxx:183 AliMUONTriggerTrack.cxx:184 AliMUONTriggerTrack.cxx:185 AliMUONTriggerTrack.cxx:186 AliMUONTriggerTrack.cxx:187 AliMUONTriggerTrack.cxx:188 AliMUONTriggerTrack.cxx:189 AliMUONTriggerTrack.cxx:190 AliMUONTriggerTrack.cxx:191 AliMUONTriggerTrack.cxx:192 AliMUONTriggerTrack.cxx:193 AliMUONTriggerTrack.cxx:194 AliMUONTriggerTrack.cxx:195 AliMUONTriggerTrack.cxx:196 AliMUONTriggerTrack.cxx:197 AliMUONTriggerTrack.cxx:198 AliMUONTriggerTrack.cxx:199 AliMUONTriggerTrack.cxx:200 AliMUONTriggerTrack.cxx:201 AliMUONTriggerTrack.cxx:202 AliMUONTriggerTrack.cxx:203 AliMUONTriggerTrack.cxx:204 AliMUONTriggerTrack.cxx:205 AliMUONTriggerTrack.cxx:206 AliMUONTriggerTrack.cxx:207 AliMUONTriggerTrack.cxx:208 AliMUONTriggerTrack.cxx:209 AliMUONTriggerTrack.cxx:210 AliMUONTriggerTrack.cxx:211 AliMUONTriggerTrack.cxx:212 AliMUONTriggerTrack.cxx:213 AliMUONTriggerTrack.cxx:214 AliMUONTriggerTrack.cxx:215 AliMUONTriggerTrack.cxx:216 AliMUONTriggerTrack.cxx:217 AliMUONTriggerTrack.cxx:218 AliMUONTriggerTrack.cxx:219 AliMUONTriggerTrack.cxx:220 AliMUONTriggerTrack.cxx:221 AliMUONTriggerTrack.cxx:222 AliMUONTriggerTrack.cxx:223 AliMUONTriggerTrack.cxx:224 AliMUONTriggerTrack.cxx:225 AliMUONTriggerTrack.cxx:226 AliMUONTriggerTrack.cxx:227 AliMUONTriggerTrack.cxx:228 AliMUONTriggerTrack.cxx:229 AliMUONTriggerTrack.cxx:230 AliMUONTriggerTrack.cxx:231 AliMUONTriggerTrack.cxx:232 AliMUONTriggerTrack.cxx:233 AliMUONTriggerTrack.cxx:234 AliMUONTriggerTrack.cxx:235 AliMUONTriggerTrack.cxx:236 AliMUONTriggerTrack.cxx:237 AliMUONTriggerTrack.cxx:238 AliMUONTriggerTrack.cxx:239 AliMUONTriggerTrack.cxx:240 AliMUONTriggerTrack.cxx:241 AliMUONTriggerTrack.cxx:242 AliMUONTriggerTrack.cxx:243 AliMUONTriggerTrack.cxx:244 AliMUONTriggerTrack.cxx:245 AliMUONTriggerTrack.cxx:246 AliMUONTriggerTrack.cxx:247 AliMUONTriggerTrack.cxx:248 AliMUONTriggerTrack.cxx:249 AliMUONTriggerTrack.cxx:250 AliMUONTriggerTrack.cxx:251 AliMUONTriggerTrack.cxx:252 AliMUONTriggerTrack.cxx:253 AliMUONTriggerTrack.cxx:254 AliMUONTriggerTrack.cxx:255 AliMUONTriggerTrack.cxx:256 AliMUONTriggerTrack.cxx:257 AliMUONTriggerTrack.cxx:258