Updated propagation to the mirror
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibLaser.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /*
17   laser track clasification;
18   TCut cutT("cutT","abs(Tr.fP[3])<0.06");
19   TCut cutPt("cutPt","abs(Tr.fP[4])<0.1");
20   TCut cutN("cutN","fTPCncls>100");
21   
22   TCut cutA = cutT+cutPt+cutN;
23
24   TCut cutFi("cutZB","");
25   TCut cutFi("cutFi","abs((180*atan2(x1,x0)/pi-20)%40)<5");
26   TChain * chain = tool.MakeChain("chain.txt","Track",0,1000000)
27 */
28
29
30
31 #include "TLinearFitter.h"
32 #include "AliTPCcalibLaser.h"
33 #include "AliExternalTrackParam.h"
34 #include "AliESDtrack.h"
35 #include "AliTPCTracklet.h"
36 #include "TH1D.h"
37 #include "TVectorD.h"
38 #include "TTreeStream.h"
39 #include "TFile.h"
40 #include "TF1.h"
41 #include "TGraphErrors.h"
42 #include "AliTPCclusterMI.h"
43 #include "AliTPCseed.h"
44 #include "AliTracker.h"
45 #include "TClonesArray.h"
46
47
48 #include "TTreeStream.h"
49 #include <iostream>
50 #include <sstream>
51 #include "AliTPCLaserTrack.h"
52
53 using namespace std;
54
55 ClassImp(AliTPCcalibLaser)
56
57 AliTPCcalibLaser::AliTPCcalibLaser():
58   AliTPCcalibBase()
59 {
60   //
61   // Constructor
62   //
63 }
64
65 AliTPCcalibLaser::AliTPCcalibLaser(const Text_t *name, const Text_t *title):
66   AliTPCcalibBase()  
67 {
68   SetName(name);
69   SetTitle(title);
70   //
71   // Constructor
72   //
73   
74 }
75
76 AliTPCcalibLaser::~AliTPCcalibLaser() {
77   //
78   // destructor
79   //
80 }
81
82 void AliTPCcalibLaser::Process(AliESDtrack *track, Int_t run) {
83   //
84   // 
85   //
86   // 1. Propagate track to the mirror radius
87   Float_t kRadius0 = 252;
88   Float_t kRadius  = 254.25;
89   if (!track->GetOuterParam()) return;
90   AliExternalTrackParam param(*(track->GetOuterParam()));
91   AliTracker::PropagateTrackTo(&param,kRadius0,0.10566,3,kTRUE);
92   AliTracker::PropagateTrackTo(&param,kRadius,0.10566,0.1,kTRUE);
93   AliTPCLaserTrack ltr;
94   AliTPCLaserTrack *ltrp=0x0;
95   //
96   Int_t id = AliTPCLaserTrack::IdentifyTrack(&param);
97   if (id!=-1 && (AliTPCLaserTrack::GetTracks()->UncheckedAt(id))) 
98     ltrp=(AliTPCLaserTrack*)AliTPCLaserTrack::GetTracks()->UncheckedAt(id);
99   else 
100     ltrp=&ltr;
101   //
102   // Fast laser ID
103   //
104   Double_t xyz[3];
105   Double_t pxyz[3];
106   param.GetXYZ(xyz);
107   param.GetPxPyPz(pxyz);
108   Int_t side = (param.GetZ()>0) ? 0:1;
109   //
110   Int_t beam   = 0;
111   Int_t beamphi = 0;
112   if (side==0) {
113     beam    = TMath::Nint((180*param.GetAlpha()/TMath::Pi()+20)/60.);
114     beamphi = TMath::Pi()*(60.*Double_t(beam)-20.)/180.;
115     if (beam<0) beam+=6;
116   }
117   //
118   if (side==1) {
119     beam = TMath::Nint((180*param.GetAlpha()/TMath::Pi()-20)/60.);
120     beamphi = TMath::Pi()*(60.*Double_t(beam)+20.)/180.;
121     if (beam<0) beam+=6;
122   }
123
124   //Int_t id(180*atan2(x1,x0)/pi+20)/60.;
125   Int_t bundle=TMath::Nint(param.GetZ()/80.);
126   //
127   //
128   if (fStreamLevel>0){
129     TTreeSRedirector *cstream = GetDebugStreamer();
130     if (cstream){
131       (*cstream)<<"Track"<<
132         "run="<<run<<
133         "id="<<id<<
134         "fSide="<<side<<        // side A-C
135         "fBeam="<<beam<<        // phi id
136         "fBundle="<<bundle<<    // laser Z
137         "bphi="<<beamphi<<      //reference beamphi
138         //
139         "LTr.="<<ltrp<<
140         "Esd.="<<track<<
141         "Tr.="<<&param<<
142         "x0="<<xyz[0]<<
143         "x1="<<xyz[1]<<
144         "x2="<<xyz[2]<<
145         "px0="<<pxyz[0]<<
146         "px1="<<pxyz[1]<<
147         "px2="<<pxyz[2]<<
148         "\n";
149     }
150   }
151 }
152
153 void AliTPCcalibLaser::Analyze(){
154   //
155   //
156   //
157 }
158
159
160
161