4 AliRunLoader* rl = Alieve::Event::AssertRunLoader();
6 rl->LoadTracks("MUON");
8 TTree* tt = rl->GetTreeT("MUON", false);
10 Alieve::MUONDigitsInfo* di = new Alieve::MUONDigitsInfo();
14 gAlice = rl->GetAliRun();
15 AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
16 const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer();
18 gStyle->SetPalette(1, 0);
25 /* Get the z positions of the trigger chambers */
27 Float_t xg, yg, zg[4];
29 // MT11 = ST6CH1, detElemId = 1100 ... 1117
30 // MT12 = ST6CH2, detElemId = 1200 ... 1217
31 // MT21 = ST7CH1, detElemId = 1300 ... 1317
32 // MT22 = ST7CH2, detElemId = 1400 ... 1417
34 kGeomTransformer->Local2Global(1100, 0, 0, 0, xg, yg, zg[0]);
35 kGeomTransformer->Local2Global(1200, 0, 0, 0, xg, yg, zg[1]);
36 kGeomTransformer->Local2Global(1300, 0, 0, 0, xg, yg, zg[2]);
37 kGeomTransformer->Local2Global(1400, 0, 0, 0, xg, yg, zg[3]);
39 /* from tracking chambers */
41 TMatrixD smatrix(2,2);
45 TClonesArray *tracks = 0;
46 tt->SetBranchAddress("MUONTrack",&tracks);
47 tt->GetEntry(0); // load event 0
49 Int_t ntracks = tracks->GetEntriesFast();
50 printf("Found %d tracks. \n",ntracks);
52 Reve::TrackList* cont = new Reve::TrackList("M-Tracks");
53 cont->SetMainColor(Color_t(6));
55 gReve->AddRenderElement(cont);
63 for (Int_t n = 0; n < ntracks; n++) {
65 mt = (AliMUONTrack*) tracks->At(n);
67 printf("Match trigger %d \n",mt->GetMatchTrigger());
72 Reve::Track* track = new Reve::Track(&rt, cont->GetRnrStyle());
74 if (mt->GetMatchTrigger()) {
75 track->SetName(Form("MUONTrack %2d (MT)", rt.label));
76 track->SetLineColor(7);
78 track->SetName(Form("MUONTrack %2d ", rt.label));
79 track->SetLineColor(6);
82 AliMUONTrackParam *trackParam = mt->GetTrackParamAtVertex();
83 xRec0 = trackParam->GetNonBendingCoor();
84 yRec0 = trackParam->GetBendingCoor();
85 zRec0 = trackParam->GetZ();
87 track->SetPoint(count,zRec0,yRec0,xRec0);
90 Float_t xr[20], yr[20], zr[20];
91 for (Int_t i = 0; i < 10; i++) xr[i]=yr[i]=zr[i]=0.0;
93 Int_t nTrackHits = mt->GetNTrackHits();
94 printf("Nhits = %d \n",nTrackHits);
95 for (Int_t iHit = 0; iHit < nTrackHits; iHit++){
96 trackParamAtHit = mt->GetTrackParamAtHit();
97 trackParam = (AliMUONTrackParam*) trackParamAtHit->At(iHit);
98 xRec = trackParam->GetNonBendingCoor();
99 yRec = trackParam->GetBendingCoor();
100 zRec = trackParam->GetZ();
102 //printf("Hit %d x %f y %f z %f \n",iHit,xRec,yRec,zRec);
108 track->SetPoint(count,zRec,yRec,xRec);
113 Float_t xrc[20], yrc[20], zrc[20];
115 if (mt->GetMatchTrigger()) {
117 for (Int_t i = 0; i < nTrackHits; i++) {
118 if (TMath::Abs(zr[i]) > 1000.0) {
119 //printf("Hit %d x %f y %f z %f \n",iHit,xr[i],yr[i],zr[i]);
128 Float_t ax, bx, ay, by;
133 for (Int_t i = 0; i < nrc; i++) {
134 xv = (Double_t)zrc[i];
135 yv = (Double_t)xrc[i];
136 //printf("x-z: xv %f yv %f \n",xv,yv);
138 smatrix(1,1) += xv*xv;
144 res = smatrix.Invert() * sums;
151 for (Int_t i = 0; i < nrc; i++) {
152 xv = (Double_t)zrc[i];
153 yv = (Double_t)yrc[i];
154 //printf("y-z: xv %f yv %f \n",xv,yv);
156 smatrix(1,1) += xv*xv;
162 res = smatrix.Invert() * sums;
166 Float_t xtc, ytc, ztc;
167 for (Int_t itc = 0; itc < 4; itc++) {
173 //printf("tc: x %f y %f z %f \n",xtc,ytc,ztc);
175 track->SetPoint(count,ztc,ytc,xtc);
182 gReve->AddRenderElement(cont, track);