AliTPCcalibCosmic.cxx - Adding example how to extract data from debug streamer AliTPCcalibLaser.cxx - Use new LaserTrack class
AliTPCcalibAlign.cxx - Change selection criterias - use cuts on absolute distances
/*
// Cuts to be justified with the debug streamer
//
- TCut c1pt("abs((tp1.fP[4]+tp2.fP[4])*0.5)<5"); // pt cut
- TCut cd1pt("abs(tp1.fP[4]-tp2.fP[4])<0.5");
- TCut c1ptpull("abs((tp1.fP[4]-tp2.fP[4])/sqrt(tp1.fC[14]+tp2.fC[14]))<5");
- TCut csy("sqrt(tp1.fC[0]+tp2.fC[0])<0.5");
- TCut csz("sqrt(tp1.fC[2]+tp2.fC[2])<0.3");
- TCut cphi("abs(v1.fElements[3])<1")
- TCut ctheta("abs(v1.fElements[4])<1")
+ TCut c1pt("abs((tp1.fP[4]+tp2.fP[4])*0.5)<3"); // pt cut - OK
+ TCut cdy("abs(tp1.fP[0]-tp2.fP[0])<2");
+ TCut cdz("abs(tp1.fP[1]-tp2.fP[1])<2");
+ TCut cdphi("abs(tp1.fP[2]-tp2.fP[2])<0.02");
+ TCut cdt("abs(tp1.fP[3]-tp2.fP[3])<0.02");
+ TCut cd1pt("abs(tp1.fP[4]-tp2.fP[4])<0.3"); // delta 1/pt cut -OK
//
//
- TCut acut = c1ptpull+c1pt+cd1pt+csy+csz+cphi+ctheta;
+ TCut acut = c1pt+cdy+cdz+cdphi+cdt+cd1pt;
*/
// 1. pt cut
- // 2. delta in curvature
- // 3. pull in 1pt
- // 4. sigma y
- // 5. sigma z
- // 6. angle phi
- // 7. angle theta
- Double_t sigma1pt = TMath::Sqrt(tp1.GetSigma1Pt2()+tp1.GetSigma1Pt2());
- Double_t delta1pt = (tp1.GetParameter()[4]-tp2.GetParameter()[4]);
- Double_t pull1pt = delta1pt/sigma1pt;
- if (0.5*TMath::Abs(tp1.GetParameter()[4]+tp2.GetParameter()[4])>5) return;
- if (TMath::Abs(delta1pt)>0.5) return;
- if (TMath::Abs(pull1pt)>5) return;
- if (TMath::Sqrt(tp1.GetSigmaY2()+tp2.GetSigmaY2())>0.5) return;
- if (TMath::Sqrt(tp1.GetSigmaZ2()+tp2.GetSigmaZ2())>0.3) return;
- if (TMath::Abs(dydx1)>1.) return;
- if (TMath::Abs(dzdx1)>1.) return;
+ // 2. dy
+ // 3. dz
+ // 4. dphi
+ // 5. dtheta
+ // 6. d1pt
+
+ if (TMath::Abs(tp1.GetParameter()[0]-tp2.GetParameter()[0])>2) return;
+ if (TMath::Abs(tp1.GetParameter()[1]-tp2.GetParameter()[1])>2) return;
+ if (TMath::Abs(tp1.GetParameter()[2]-tp2.GetParameter()[2])>0.02) return;
+ if (TMath::Abs(tp1.GetParameter()[3]-tp2.GetParameter()[3])>0.02) return;
+ if (TMath::Abs(tp1.GetParameter()[4]-tp2.GetParameter()[4])>0.3) return;
+ if (TMath::Abs((tp1.GetParameter()[4]+tp2.GetParameter()[4])*0.5)<3) return;
//
// fill resolution histograms - previous cut included
FillHisto(tp1,tp2,s1,s2);
}
}
-/*
-
-
-void AliTPCcalibCosmic::dEdxCorrection(){
- TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.03")
- TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<5")
- TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<1&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
- TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>70");
-}
-
-*/
-
-
Long64_t AliTPCcalibCosmic::Merge(TCollection */*li*/) {
}
+
+
+/*
+
+
+void AliTPCcalibCosmic::dEdxCorrection(){
+ TCut cutT("cutT","abs(Tr1.fP[3]+Tr0.fP[3])<0.03");
+ TCut cutD("cutD","abs(Tr0.fP[0]+Tr1.fP[0])<5");
+ TCut cutPt("cutPt","abs(Tr1.fP[4]+Tr0.fP[4])<0.2&&abs(Tr0.fP[4])+abs(Tr1.fP[4])<10");
+ TCut cutN("cutN","min(Orig0.fTPCncls,Orig1.fTPCncls)>70");
+ TCut cutA=cutT+cutD+cutPt+cutN;
+
+
+ .x ~/rootlogon.C
+ gSystem->Load("libSTAT.so");
+
+ Double_t chi2=0;
+ Int_t npoints=0;
+ TVectorD fitParam;
+ TMatrixD covMatrix;
+
+ chain->Draw("Tr0.fP[4]+Tr1.fP[4]","OK"+cutA);
+
+ TString strFit;
+ strFit+="(Tr0.fP[1]/250)++";
+ strFit+="(Tr0.fP[1]/250)^2++";
+ strFit+="(Tr0.fP[3])++";
+ strFit+="(Tr0.fP[3])^2++";
+
+ TString * ptParam = TStatToolkit::FitPlane(chain,"Tr0.fP[4]+Tr1.fP[4]", strFit.Data(),cutA, chi2,npoints,fitParam,covMatrix)
+
+strFit+="(Tr0.fP[1]/250)++";
+strFit+="(Tr0.fP[1]/250)^2++";
+strFit+="(Tr0.fP[3])++";
+strFit+="(Tr0.fP[3])^2++";
+strFit+="(Tr0.fP[1]/250)^2*Tr0.fP[3]++";
+strFit+="(Tr0.fP[1]/250)^2*Tr0.fP[3]^2++";
+//
+
+strFit+="sign(Tr0.fP[1])++"
+strFit+="sign(Tr0.fP[1])*(1-abs(Tr0.fP[1]/250))"
+
+TString * thetaParam = TStatToolkit::FitPlane(chain,"Tr0.fP[3]+Tr1.fP[3]", strFit.Data(),cutA, chi2,npoints,fitParam,covMatrix)
+*/
+
+
/*
laser track clasification;
- TCut cutFi("cutFi","abs((180*atan2(x1,x0)/pi-20)%60)<5");
+ TCut cutT("cutT","abs(Tr.fP[3])<0.06");
+ TCut cutPt("cutPt","abs(Tr.fP[4])<0.1");
+ TCut cutN("cutN","fTPCncls>100");
+
+ TCut cutFi("cutZB","");
TCut cutFi("cutFi","abs((180*atan2(x1,x0)/pi-20)%40)<5");
*/
#include "TTreeStream.h"
#include <iostream>
#include <sstream>
+#include "AliTPCLaserTrack.h"
+
using namespace std;
ClassImp(AliTPCcalibLaser)
//
}
-void AliTPCcalibLaser::Process(AliESDtrack *track) {
+void AliTPCcalibLaser::Process(AliESDtrack *track, Int_t run) {
//
//
//
AliExternalTrackParam param(*(track->GetOuterParam()));
AliTracker::PropagateTrackTo(¶m,270.,0.0005,3,kTRUE);
AliTracker::PropagateTrackTo(¶m,kRadius,0.0005,0.1,kTRUE);
+ AliTPCLaserTrack ltr;
+ AliTPCLaserTrack *ltrp=0x0;
+ Int_t id = AliTPCLaserTrack::IdentifyTrack(¶m);
+ if (id!=-1) ltrp=(AliTPCLaserTrack*)AliTPCLaserTrack::GetTracks()->UncheckedAt(id);
+ else ltrp=<r;
//
if (fStreamLevel>0){
TTreeSRedirector *cstream = GetDebugStreamer();
Double_t pxyz[3];
param.GetXYZ(xyz);
param.GetPxPyPz(pxyz);
+ Int_t side = (param.GetZ()>0) ? 0:1;
+ Int_t beam = 0;
+ if (side==0) beam = TMath::Nint((180*atan2(xyz[1],xyz[0])/TMath::Pi()+20)/60.);
+ if (side==1) beam = TMath::Nint((180*atan2(xyz[1],xyz[0])/TMath::Pi()-20)/60.);
+ //Int_t id(180*atan2(x1,x0)/pi+20)/60.;
+ Int_t bundle=TMath::Nint(param.GetZ()/80.);
if (cstream){
(*cstream)<<"Track"<<
+ "run="<<run<<
+ "id="<<id<<
+ "fSide="<<side<< // side A-C
+ "fBeam="<<beam<< // phi id
+ "fBundle="<<bundle<< // laser Z
+ //
+ "LTr.="<<ltrp<<
+ "Esd.="<<track<<
"Tr.="<<¶m<<
"x0="<<xyz[0]<<
"x1="<<xyz[1]<<
}
-void AliTPCcalibLaser::Terminate(){
- //
- //
- //
-}
-
-
AliTPCcalibLaser();
AliTPCcalibLaser(const Text_t *name, const Text_t *title);
virtual ~AliTPCcalibLaser();
- virtual void Process(AliESDtrack *track);
+ virtual void Process(AliESDtrack *track, Int_t run);
virtual void Analyze();
- virtual void Terminate();
//
private: