#include "AliMUONTriggerTrackToTrackerClusters.h"
#include "AliCodeTimer.h"
#include "AliLog.h"
#include "AliMUONConstants.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONTrack.h"
#include "AliMUONTrackExtrap.h"
#include "AliMUONTriggerTrack.h"
#include "AliMUONVCluster.h"
#include "AliMUONVClusterStore.h"
#include "AliMUONVTriggerTrackStore.h"
#include "AliMUONTrackParam.h"
#include "AliMpArea.h"
#include "AliMpDEManager.h"
#include <TMath.h>
ClassImp(AliMUONTriggerTrackToTrackerClusters)
AliMUONTriggerTrackToTrackerClusters::AliMUONTriggerTrackToTrackerClusters(const AliMUONGeometryTransformer& transformer,
AliMUONVTriggerTrackStore* trackStore)
: TObject(), fkTransformer(transformer), fTriggerTrackStore(trackStore)
{
}
AliMUONTriggerTrackToTrackerClusters::~AliMUONTriggerTrackToTrackerClusters()
{
}
Int_t
AliMUONTriggerTrackToTrackerClusters::DetElemId(Int_t chamber, Double_t x, Double_t y,
Double_t ex, Double_t ey,
Double_t& z) const
{
AliMpDEIterator it;
AliMpArea a(x, y, ex, ey);
it.First(chamber);
while ( !it.IsDone() )
{
Int_t detElemId = it.CurrentDEId();
AliMpArea* area = fkTransformer.GetDEArea(detElemId);
if ( area->Overlap(a) )
{
Double_t dummyx, dummyy;
fkTransformer.Local2Global(detElemId,0,0,0,dummyx,dummyy,z);
return detElemId;
}
it.Next();
}
return -1;
}
Int_t
AliMUONTriggerTrackToTrackerClusters::GenerateClusters(Int_t iChamber,
AliMUONVClusterStore& clusterStore) const
{
AliCodeTimerAuto(Form("Chamber %d",iChamber),0);
TIter next(fTriggerTrackStore->CreateIterator());
AliMUONTriggerTrack* track;
Int_t nadded(0);
while ( ( track = static_cast<AliMUONTriggerTrack*>(next()) ) )
{
nadded += GenerateClusters(iChamber,*track,clusterStore);
}
return nadded;
}
Int_t
AliMUONTriggerTrackToTrackerClusters::GenerateClusters(Int_t iChamber,
const AliMUONTriggerTrack& track,
AliMUONVClusterStore& clusterStore) const
{
Int_t nadded(0);
Double_t z = AliMUONConstants::DefaultChamberZ(10);
Double_t bendingCoord = track.GetY11();
Double_t bendingSlope = TMath::Tan(track.GetThetay());
Double_t bendingImpact = bendingCoord - z * bendingSlope;
AliDebug(1,Form("TriggerTrack impact parameter=%e",bendingImpact));
Double_t inverseBendingMomentum = 1. / AliMUONTrackExtrap::GetBendingMomentumFromImpactParam(bendingImpact);
AliMUONTrackParam trackParam;
trackParam.SetZ(z);
trackParam.SetNonBendingCoor(track.GetX11());
trackParam.SetNonBendingSlope(TMath::Tan(track.GetThetax()));
trackParam.SetBendingCoor(bendingCoord);
trackParam.SetBendingSlope(bendingSlope);
trackParam.SetInverseBendingMomentum(inverseBendingMomentum);
Double_t dZ = AliMUONConstants::DefaultChamberZ(10) - AliMUONConstants::DefaultChamberZ(12);
Double_t sigmaX = AliMUONConstants::TriggerNonBendingReso();
Double_t sigmaY = AliMUONConstants::TriggerBendingReso();
TMatrixD paramCov(5,5);
paramCov.Zero();
paramCov(0,0) = sigmaX*sigmaX;
paramCov(0,1) = paramCov(0,0)/dZ;
paramCov(1,0) = paramCov(0,1);
paramCov(1,1) = 2.0*paramCov(0,0)/dZ/dZ;
paramCov(2,2) = sigmaY*sigmaY;
paramCov(2,3) = paramCov(2,2)/dZ;
paramCov(3,2) = paramCov(2,3);
paramCov(3,3) = 2.0*paramCov(2,2)/dZ/dZ;
paramCov(4,4) = 0.5*inverseBendingMomentum * 0.5*inverseBendingMomentum;
trackParam.SetCovariances(paramCov);
const Float_t kFilterThickness = AliMUONConstants::MuonFilterZEnd()-AliMUONConstants::MuonFilterZBeg();
AliMUONTrackExtrap::ExtrapToZCov(&trackParam, AliMUONConstants::MuonFilterZEnd());
AliMUONTrackExtrap::AddMCSEffect(&trackParam, kFilterThickness, AliMUONConstants::MuonFilterX0());
Int_t nclusters = clusterStore.GetSize();
AliMUONTrackParam tp(trackParam);
Double_t zg = AliMUONConstants::DefaultChamberZ(iChamber);
AliMUONTrackExtrap::ExtrapToZCov(&tp, zg);
AliDebug(1,Form("iChamber=%d",iChamber));
StdoutToAliDebug(1,tp.Print("FULLCOV"););
Double_t x = tp.GetNonBendingCoor();
Double_t y = tp.GetBendingCoor();
const TMatrixD& cov = tp.GetCovariances();
Double_t ex = TMath::Sqrt(cov(0,0));
Double_t ey = TMath::Sqrt(cov(2,2));
Double_t zde;
Int_t detElemId = DetElemId(iChamber,x,y,ex,ey,zde);
AliDebug(1,Form("zg = %e zde = %e",zg,zde));
if ( AliMpDEManager::IsValidDetElemId(detElemId) )
{
AliMUONVCluster* rawCluster = clusterStore.Add(AliMpDEManager::GetChamberId(detElemId), detElemId, nclusters);
++nclusters;
++nadded;
rawCluster->SetCharge(100.0);
rawCluster->SetXYZ(x, y, zg);
rawCluster->SetErrXY(ex,ey);
}
else
{
AliWarning(Form("No DE found at xg=%e yg=%e",x,y));
}
return nadded;
}
AliMUONTriggerTrackToTrackerClusters.cxx:1 AliMUONTriggerTrackToTrackerClusters.cxx:2 AliMUONTriggerTrackToTrackerClusters.cxx:3 AliMUONTriggerTrackToTrackerClusters.cxx:4 AliMUONTriggerTrackToTrackerClusters.cxx:5 AliMUONTriggerTrackToTrackerClusters.cxx:6 AliMUONTriggerTrackToTrackerClusters.cxx:7 AliMUONTriggerTrackToTrackerClusters.cxx:8 AliMUONTriggerTrackToTrackerClusters.cxx:9 AliMUONTriggerTrackToTrackerClusters.cxx:10 AliMUONTriggerTrackToTrackerClusters.cxx:11 AliMUONTriggerTrackToTrackerClusters.cxx:12 AliMUONTriggerTrackToTrackerClusters.cxx:13 AliMUONTriggerTrackToTrackerClusters.cxx:14 AliMUONTriggerTrackToTrackerClusters.cxx:15 AliMUONTriggerTrackToTrackerClusters.cxx:16 AliMUONTriggerTrackToTrackerClusters.cxx:17 AliMUONTriggerTrackToTrackerClusters.cxx:18 AliMUONTriggerTrackToTrackerClusters.cxx:19 AliMUONTriggerTrackToTrackerClusters.cxx:20 AliMUONTriggerTrackToTrackerClusters.cxx:21 AliMUONTriggerTrackToTrackerClusters.cxx:22 AliMUONTriggerTrackToTrackerClusters.cxx:23 AliMUONTriggerTrackToTrackerClusters.cxx:24 AliMUONTriggerTrackToTrackerClusters.cxx:25 AliMUONTriggerTrackToTrackerClusters.cxx:26 AliMUONTriggerTrackToTrackerClusters.cxx:27 AliMUONTriggerTrackToTrackerClusters.cxx:28 AliMUONTriggerTrackToTrackerClusters.cxx:29 AliMUONTriggerTrackToTrackerClusters.cxx:30 AliMUONTriggerTrackToTrackerClusters.cxx:31 AliMUONTriggerTrackToTrackerClusters.cxx:32 AliMUONTriggerTrackToTrackerClusters.cxx:33 AliMUONTriggerTrackToTrackerClusters.cxx:34 AliMUONTriggerTrackToTrackerClusters.cxx:35 AliMUONTriggerTrackToTrackerClusters.cxx:36 AliMUONTriggerTrackToTrackerClusters.cxx:37 AliMUONTriggerTrackToTrackerClusters.cxx:38 AliMUONTriggerTrackToTrackerClusters.cxx:39 AliMUONTriggerTrackToTrackerClusters.cxx:40 AliMUONTriggerTrackToTrackerClusters.cxx:41 AliMUONTriggerTrackToTrackerClusters.cxx:42 AliMUONTriggerTrackToTrackerClusters.cxx:43 AliMUONTriggerTrackToTrackerClusters.cxx:44 AliMUONTriggerTrackToTrackerClusters.cxx:45 AliMUONTriggerTrackToTrackerClusters.cxx:46 AliMUONTriggerTrackToTrackerClusters.cxx:47 AliMUONTriggerTrackToTrackerClusters.cxx:48 AliMUONTriggerTrackToTrackerClusters.cxx:49 AliMUONTriggerTrackToTrackerClusters.cxx:50 AliMUONTriggerTrackToTrackerClusters.cxx:51 AliMUONTriggerTrackToTrackerClusters.cxx:52 AliMUONTriggerTrackToTrackerClusters.cxx:53 AliMUONTriggerTrackToTrackerClusters.cxx:54 AliMUONTriggerTrackToTrackerClusters.cxx:55 AliMUONTriggerTrackToTrackerClusters.cxx:56 AliMUONTriggerTrackToTrackerClusters.cxx:57 AliMUONTriggerTrackToTrackerClusters.cxx:58 AliMUONTriggerTrackToTrackerClusters.cxx:59 AliMUONTriggerTrackToTrackerClusters.cxx:60 AliMUONTriggerTrackToTrackerClusters.cxx:61 AliMUONTriggerTrackToTrackerClusters.cxx:62 AliMUONTriggerTrackToTrackerClusters.cxx:63 AliMUONTriggerTrackToTrackerClusters.cxx:64 AliMUONTriggerTrackToTrackerClusters.cxx:65 AliMUONTriggerTrackToTrackerClusters.cxx:66 AliMUONTriggerTrackToTrackerClusters.cxx:67 AliMUONTriggerTrackToTrackerClusters.cxx:68 AliMUONTriggerTrackToTrackerClusters.cxx:69 AliMUONTriggerTrackToTrackerClusters.cxx:70 AliMUONTriggerTrackToTrackerClusters.cxx:71 AliMUONTriggerTrackToTrackerClusters.cxx:72 AliMUONTriggerTrackToTrackerClusters.cxx:73 AliMUONTriggerTrackToTrackerClusters.cxx:74 AliMUONTriggerTrackToTrackerClusters.cxx:75 AliMUONTriggerTrackToTrackerClusters.cxx:76 AliMUONTriggerTrackToTrackerClusters.cxx:77 AliMUONTriggerTrackToTrackerClusters.cxx:78 AliMUONTriggerTrackToTrackerClusters.cxx:79 AliMUONTriggerTrackToTrackerClusters.cxx:80 AliMUONTriggerTrackToTrackerClusters.cxx:81 AliMUONTriggerTrackToTrackerClusters.cxx:82 AliMUONTriggerTrackToTrackerClusters.cxx:83 AliMUONTriggerTrackToTrackerClusters.cxx:84 AliMUONTriggerTrackToTrackerClusters.cxx:85 AliMUONTriggerTrackToTrackerClusters.cxx:86 AliMUONTriggerTrackToTrackerClusters.cxx:87 AliMUONTriggerTrackToTrackerClusters.cxx:88 AliMUONTriggerTrackToTrackerClusters.cxx:89 AliMUONTriggerTrackToTrackerClusters.cxx:90 AliMUONTriggerTrackToTrackerClusters.cxx:91 AliMUONTriggerTrackToTrackerClusters.cxx:92 AliMUONTriggerTrackToTrackerClusters.cxx:93 AliMUONTriggerTrackToTrackerClusters.cxx:94 AliMUONTriggerTrackToTrackerClusters.cxx:95 AliMUONTriggerTrackToTrackerClusters.cxx:96 AliMUONTriggerTrackToTrackerClusters.cxx:97 AliMUONTriggerTrackToTrackerClusters.cxx:98 AliMUONTriggerTrackToTrackerClusters.cxx:99 AliMUONTriggerTrackToTrackerClusters.cxx:100 AliMUONTriggerTrackToTrackerClusters.cxx:101 AliMUONTriggerTrackToTrackerClusters.cxx:102 AliMUONTriggerTrackToTrackerClusters.cxx:103 AliMUONTriggerTrackToTrackerClusters.cxx:104 AliMUONTriggerTrackToTrackerClusters.cxx:105 AliMUONTriggerTrackToTrackerClusters.cxx:106 AliMUONTriggerTrackToTrackerClusters.cxx:107 AliMUONTriggerTrackToTrackerClusters.cxx:108 AliMUONTriggerTrackToTrackerClusters.cxx:109 AliMUONTriggerTrackToTrackerClusters.cxx:110 AliMUONTriggerTrackToTrackerClusters.cxx:111 AliMUONTriggerTrackToTrackerClusters.cxx:112 AliMUONTriggerTrackToTrackerClusters.cxx:113 AliMUONTriggerTrackToTrackerClusters.cxx:114 AliMUONTriggerTrackToTrackerClusters.cxx:115 AliMUONTriggerTrackToTrackerClusters.cxx:116 AliMUONTriggerTrackToTrackerClusters.cxx:117 AliMUONTriggerTrackToTrackerClusters.cxx:118 AliMUONTriggerTrackToTrackerClusters.cxx:119 AliMUONTriggerTrackToTrackerClusters.cxx:120 AliMUONTriggerTrackToTrackerClusters.cxx:121 AliMUONTriggerTrackToTrackerClusters.cxx:122 AliMUONTriggerTrackToTrackerClusters.cxx:123 AliMUONTriggerTrackToTrackerClusters.cxx:124 AliMUONTriggerTrackToTrackerClusters.cxx:125 AliMUONTriggerTrackToTrackerClusters.cxx:126 AliMUONTriggerTrackToTrackerClusters.cxx:127 AliMUONTriggerTrackToTrackerClusters.cxx:128 AliMUONTriggerTrackToTrackerClusters.cxx:129 AliMUONTriggerTrackToTrackerClusters.cxx:130 AliMUONTriggerTrackToTrackerClusters.cxx:131 AliMUONTriggerTrackToTrackerClusters.cxx:132 AliMUONTriggerTrackToTrackerClusters.cxx:133 AliMUONTriggerTrackToTrackerClusters.cxx:134 AliMUONTriggerTrackToTrackerClusters.cxx:135 AliMUONTriggerTrackToTrackerClusters.cxx:136 AliMUONTriggerTrackToTrackerClusters.cxx:137 AliMUONTriggerTrackToTrackerClusters.cxx:138 AliMUONTriggerTrackToTrackerClusters.cxx:139 AliMUONTriggerTrackToTrackerClusters.cxx:140 AliMUONTriggerTrackToTrackerClusters.cxx:141 AliMUONTriggerTrackToTrackerClusters.cxx:142 AliMUONTriggerTrackToTrackerClusters.cxx:143 AliMUONTriggerTrackToTrackerClusters.cxx:144 AliMUONTriggerTrackToTrackerClusters.cxx:145 AliMUONTriggerTrackToTrackerClusters.cxx:146 AliMUONTriggerTrackToTrackerClusters.cxx:147 AliMUONTriggerTrackToTrackerClusters.cxx:148 AliMUONTriggerTrackToTrackerClusters.cxx:149 AliMUONTriggerTrackToTrackerClusters.cxx:150 AliMUONTriggerTrackToTrackerClusters.cxx:151 AliMUONTriggerTrackToTrackerClusters.cxx:152 AliMUONTriggerTrackToTrackerClusters.cxx:153 AliMUONTriggerTrackToTrackerClusters.cxx:154 AliMUONTriggerTrackToTrackerClusters.cxx:155 AliMUONTriggerTrackToTrackerClusters.cxx:156 AliMUONTriggerTrackToTrackerClusters.cxx:157 AliMUONTriggerTrackToTrackerClusters.cxx:158 AliMUONTriggerTrackToTrackerClusters.cxx:159 AliMUONTriggerTrackToTrackerClusters.cxx:160 AliMUONTriggerTrackToTrackerClusters.cxx:161 AliMUONTriggerTrackToTrackerClusters.cxx:162 AliMUONTriggerTrackToTrackerClusters.cxx:163 AliMUONTriggerTrackToTrackerClusters.cxx:164 AliMUONTriggerTrackToTrackerClusters.cxx:165 AliMUONTriggerTrackToTrackerClusters.cxx:166 AliMUONTriggerTrackToTrackerClusters.cxx:167 AliMUONTriggerTrackToTrackerClusters.cxx:168 AliMUONTriggerTrackToTrackerClusters.cxx:169 AliMUONTriggerTrackToTrackerClusters.cxx:170 AliMUONTriggerTrackToTrackerClusters.cxx:171 AliMUONTriggerTrackToTrackerClusters.cxx:172 AliMUONTriggerTrackToTrackerClusters.cxx:173 AliMUONTriggerTrackToTrackerClusters.cxx:174 AliMUONTriggerTrackToTrackerClusters.cxx:175 AliMUONTriggerTrackToTrackerClusters.cxx:176 AliMUONTriggerTrackToTrackerClusters.cxx:177 AliMUONTriggerTrackToTrackerClusters.cxx:178 AliMUONTriggerTrackToTrackerClusters.cxx:179 AliMUONTriggerTrackToTrackerClusters.cxx:180 AliMUONTriggerTrackToTrackerClusters.cxx:181 AliMUONTriggerTrackToTrackerClusters.cxx:182 AliMUONTriggerTrackToTrackerClusters.cxx:183 AliMUONTriggerTrackToTrackerClusters.cxx:184 AliMUONTriggerTrackToTrackerClusters.cxx:185 AliMUONTriggerTrackToTrackerClusters.cxx:186 AliMUONTriggerTrackToTrackerClusters.cxx:187 AliMUONTriggerTrackToTrackerClusters.cxx:188 AliMUONTriggerTrackToTrackerClusters.cxx:189 AliMUONTriggerTrackToTrackerClusters.cxx:190 AliMUONTriggerTrackToTrackerClusters.cxx:191 AliMUONTriggerTrackToTrackerClusters.cxx:192 AliMUONTriggerTrackToTrackerClusters.cxx:193 AliMUONTriggerTrackToTrackerClusters.cxx:194 AliMUONTriggerTrackToTrackerClusters.cxx:195 AliMUONTriggerTrackToTrackerClusters.cxx:196 AliMUONTriggerTrackToTrackerClusters.cxx:197 AliMUONTriggerTrackToTrackerClusters.cxx:198 AliMUONTriggerTrackToTrackerClusters.cxx:199 AliMUONTriggerTrackToTrackerClusters.cxx:200 AliMUONTriggerTrackToTrackerClusters.cxx:201 AliMUONTriggerTrackToTrackerClusters.cxx:202 AliMUONTriggerTrackToTrackerClusters.cxx:203 AliMUONTriggerTrackToTrackerClusters.cxx:204 AliMUONTriggerTrackToTrackerClusters.cxx:205 AliMUONTriggerTrackToTrackerClusters.cxx:206 AliMUONTriggerTrackToTrackerClusters.cxx:207 AliMUONTriggerTrackToTrackerClusters.cxx:208 AliMUONTriggerTrackToTrackerClusters.cxx:209 AliMUONTriggerTrackToTrackerClusters.cxx:210 AliMUONTriggerTrackToTrackerClusters.cxx:211 AliMUONTriggerTrackToTrackerClusters.cxx:212 AliMUONTriggerTrackToTrackerClusters.cxx:213 AliMUONTriggerTrackToTrackerClusters.cxx:214 AliMUONTriggerTrackToTrackerClusters.cxx:215 AliMUONTriggerTrackToTrackerClusters.cxx:216 AliMUONTriggerTrackToTrackerClusters.cxx:217 AliMUONTriggerTrackToTrackerClusters.cxx:218 AliMUONTriggerTrackToTrackerClusters.cxx:219 AliMUONTriggerTrackToTrackerClusters.cxx:220 AliMUONTriggerTrackToTrackerClusters.cxx:221 AliMUONTriggerTrackToTrackerClusters.cxx:222 AliMUONTriggerTrackToTrackerClusters.cxx:223 AliMUONTriggerTrackToTrackerClusters.cxx:224 AliMUONTriggerTrackToTrackerClusters.cxx:225 AliMUONTriggerTrackToTrackerClusters.cxx:226 AliMUONTriggerTrackToTrackerClusters.cxx:227 AliMUONTriggerTrackToTrackerClusters.cxx:228 AliMUONTriggerTrackToTrackerClusters.cxx:229