#include "TH2F.h"
#include "TStatToolkit.h"
#include "TROOT.h"
+#include "TDatabasePDG.h"
#include "TTreeStream.h"
if (counter<kMinTracks) return;
//FitDriftV();
- FitDriftV(0.3);
+ FitDriftV(0.2);
if (!fFullCalib) return;
static Bool_t init=kFALSE;
if (!init){
const Float_t kSaturCut = 0.05; // remove saturated lasers - cut on fraction of saturated
const Float_t kDistCut = 3.; // distance sigma cut - 3 sigma
const Float_t kDistCutAbs = 1.; // absolute cut 1 cm
- const Float_t kMinClusters = 60.; // minimal amount of the clusters
- const Float_t kMinSignal = 10.; // minimal mean height of the signal
+ const Float_t kMinClusters = 40.; // minimal amount of the clusters
+ const Float_t kMinSignal = 2.5; // minimal mean height of the signal
const Float_t kChi2Cut = 1.0; // chi2 cut to accept drift fit
//
static TLinearFitter fdriftA(3,"hyp2");
AliExternalTrackParam param(*(track->GetOuterParam()));
- AliTracker::PropagateTrackTo(¶m,kRadius0,0.10566,3,kTRUE);
- AliTracker::PropagateTrackTo(¶m,kRadius,0.10566,0.1,kTRUE);
+ AliTracker::PropagateTrackTo(¶m,kRadius0,TDatabasePDG::Instance()->GetParticle("mu+")->Mass(),3,kTRUE);
+ AliTracker::PropagateTrackTo(¶m,kRadius,TDatabasePDG::Instance()->GetParticle("mu+")->Mass(),0.1,kTRUE);
AliTPCLaserTrack ltr;
AliTPCLaserTrack *ltrp=0x0;
// AliTPCLaserTrack *ltrpjw=0x0;
const Float_t kmultiCut=2;
const Float_t kcutP0=0.002;
AliMagF* magF= dynamic_cast<AliMagF*> (TGeoGlobalMagField::Instance()->GetField());
- Double_t xyz[3]={90,0,10};
- Double_t bxyz[3]={90,0,10};
+ Double_t xyz[3]={90,0,10}; // tmp. global position
+ Double_t bxyz[3]={90,0,10}; // tmp. mag field integral - cylindrical
+ Double_t bgxyz[3]={90,0,10}; // tmp. mag field integral - local
//
AliTPCcalibLaser *laser = this;
TTreeSRedirector *pcstream = new TTreeSRedirector("laserMean.root");
hisP3->Fit(&fg,"","",hisP3->GetMean()-4*hisP3->GetRMS(),hisP3->GetMean()+4*hisP3->GetRMS());
Double_t gp31 = fg.GetParameter(1);
Double_t gp32 = fg.GetParameter(2);
+ Double_t meanp3 = hisP3->GetMean();
+ Double_t rmsp3 = hisP3->GetRMS();
//
if (hisP4->GetRMS()>hisP4->GetBinWidth(1))
hisP4->Fit(&fg,"","",hisP4->GetMean()-4*hisP4->GetRMS(),hisP4->GetMean()+4*hisP4->GetRMS());
Double_t gp41 = fg.GetParameter(1);
Double_t gp42 = fg.GetParameter(2);
+ Double_t meanp4 = hisP4->GetMean();
+ Double_t rmsp4 = hisP4->GetRMS();
//
Float_t meanS=hisS->GetMean();
//
// magnetic field integrals
TVectorD vecIBR(159); // radial
TVectorD vecIBRPhi(159); // r-phi
+ TVectorD vecIBLX(159); // local x
+ TVectorD vecIBLY(159); // local y
+ TVectorD vecIBGX(159); // local x
+ TVectorD vecIBGY(159); // local y
TVectorD vecIBZ(159); // z
//
for (Int_t irow=0;irow<159;irow++){
vecIBR[irow]=0;
vecIBRPhi[irow]=0;
+ vecIBLX[irow]=0;
+ vecIBLY[irow]=0;
+ vecIBGX[irow]=0;
+ vecIBGY[irow]=0;
vecIBZ[irow]=0;
- Double_t gx=(*(ltrp->fVecGX))[irow];
- Double_t gy=(*(ltrp->fVecGY))[irow];
+ Double_t gx =(*(ltrp->fVecGX))[irow];
+ Double_t gy =(*(ltrp->fVecGY))[irow];
+ Int_t lsec =TMath::Nint((*(ltrp->fVecSec))[irow]);
+ Double_t ca =TMath::Cos(TMath::Pi()*(lsec+0.5)/9.);
+ Double_t sa =TMath::Sin(TMath::Pi()*(lsec+0.5)/9.);
xyz[2]=(*(ltrp->fVecGZ))[irow];
xyz[0]=TMath::Sqrt(gx*gx+gy*gy);
xyz[1]=TMath::ATan2(gy,gx);
+ Double_t gxyz[3]={gx,gy,(*(ltrp->fVecGZ))[irow]};
if (magF){
magF->GetTPCIntCyl(xyz,bxyz);
+ magF->GetTPCInt(gxyz,bgxyz);
vecIBR[irow]=bxyz[0];
vecIBRPhi[irow]=bxyz[1];
+ //
+ vecIBGX[irow]=bgxyz[0];
+ vecIBGY[irow]=bgxyz[1];
+ //
+ vecIBLX[irow]= bgxyz[0]*ca+bgxyz[1]*sa;
+ vecIBLY[irow]= -bgxyz[0]*sa+bgxyz[1]*ca;
+ //
+
vecIBZ[irow]=bxyz[2];
}
}
//
"gp31="<<gp31<< //gaus mean - tgl
"gp32="<<gp32<< //gaus rms -tgl
+ "meanp3="<<meanp3<< //mean - tgl
+ "rmsp3="<<rmsp3<< //rms -tgl
"gp41="<<gp41<< //gaus mean - P4
"gp42="<<gp42<< //gaus rms - P4
+ "meanp4="<<meanp4<< //mean - P4
+ "rmsp4="<<rmsp4<< //rms - P4
// Parameters from abs res analysis
"SecIn="<<secInner<< // inner sector
"SecOut="<<secOuter<< // outer sector
"lasTanPhiLocOut="<<lasTanPhiLocOut<<// laser tan phi in local frame (outer)
"ibr.="<<&vecIBR<< // radial filed integral
"ibrphi.="<<&vecIBRPhi<< // r=phifiled integral
- "ibz.="<<&vecIBZ<< // radial filed integral
+ "ibr.="<<&vecIBR<< // radial filed integral
+ "ibz.="<<&vecIBZ<< // z filed integral
+ //
+ "iblx.="<<&vecIBLX<< // local bx integral
+ "ibly.="<<&vecIBLY<< // local by integral
+ "ibgx.="<<&vecIBGX<< // global bx integral
+ "ibgy.="<<&vecIBGY<< // global by integral
+ //
"X.="<<&vecX<< // local x
"Y.="<<&vecY<< // local y
"R.="<<&vecR<< // radius