return kTRUE;
}
-Bool_t AliTRDdEdxBaseUtils::GetFirstSectorStackMomentum(const AliTRDtrackV1 *trdtrack, Int_t & isec, Int_t & istk, Double_t & mom)
+Double_t AliTRDdEdxBaseUtils::GetDeltaPhi(const AliTRDseedV1 *tracklet)
+{
+ //
+ //get phi difference to normal incidence
+ //
+ if(tracklet)
+ return TMath::ATan(tracklet->GetYref(1));
+ else
+ return -999;
+}
+
+AliTRDseedV1 * AliTRDdEdxBaseUtils::GetLastTracklet(const AliTRDtrackV1 *trdtrack)
+{
+ //
+ //get last tracklet
+ //
+ AliTRDseedV1 *tracklet = 0x0;
+
+ for(Int_t ilayer = 5; ilayer >= 0; ilayer--){
+ tracklet=trdtrack->GetTracklet(ilayer);
+ if(!tracklet)
+ continue;
+
+ break;
+ }
+
+ return tracklet;
+}
+
+AliTRDseedV1 * AliTRDdEdxBaseUtils::GetFirstSectorStackMomentum(const AliTRDtrackV1 *trdtrack, Int_t & isec, Int_t & istk, Double_t & mom)
{
//
//as function name
isec = istk = -999;
mom = -999;
+ AliTRDseedV1 *tracklet = 0x0;
for(Int_t ilayer = 0; ilayer < 6; ilayer++){
- AliTRDseedV1 *tracklet=trdtrack->GetTracklet(ilayer);
+ tracklet=trdtrack->GetTracklet(ilayer);
if(!tracklet)
continue;
break;
}
- if(isec<0)
- return kFALSE;
- else
- return kTRUE;
+ return tracklet;
}
//===================================================================================
//===================================================================================
// dEdx Parameterization
//===================================================================================
+void AliTRDdEdxBaseUtils::FastFitdEdxTR(TH1 * hh)
+{
+ //
+ //fit dedx tr from mean
+ //
+
+ TF1 *ff=new TF1("ff", MeandEdxTRLogx, -0.5, 4.5, 8);
+ Double_t par[8];
+ par[0]= 2.397001e-01;
+ par[1]= 1.334697e+00;
+ par[2]= 6.967470e+00;
+ par[3]= 9.055289e-02;
+ par[4]= 9.388760e+00;
+ par[5]= 9.452742e-04;
+ par[6]= -1.866091e+00;
+ par[7]= 1.403545e+00;
+
+ ff->SetParameters(par);
+ hh->Fit(ff,"N");
+
+ for(int ii=0; ii<8; ii++){
+ printf("par[%d]=%e;\n", ii, ff->GetParameter(ii));
+ }
+
+ TFile *fout=new TFile("fastfit.root","recreate");
+ hh->Write();
+ ff->Write();
+ fout->Save();
+ fout->Close();
+
+ delete fout;
+ delete ff;
+}
Double_t AliTRDdEdxBaseUtils::Q0MeanTRDpp(const Double_t bg)
{
//
Double_t par[8];
- //03132012161150
- //opt: ppQ0
-par[0]= 2.397001e-01;
-par[1]= 1.334697e+00;
-par[2]= 6.967470e+00;
-par[3]= 9.055289e-02;
-par[4]= 9.388760e+00;
-par[5]= 9.452742e-04;
-par[6]= -1.866091e+00;
-par[7]= 1.403545e+00;
-
- ///u/xlu/.task/CommondEdx/myAnaData/Optimum/check11/Merged/LHC10e_plot/Separation/see2.log:hhtype2Q0b2c2 scale 0.428543 at ltbg 0.650000
- return 0.428543*MeandEdxTR(&bg, par);
+ Double_t scale = 1;
+
+ //2012-0605 /u/xlu/.task/CommondEdx/myAnaData/newTune_r56595/inuse/plot/fastFit
+ scale = 0.9257;
+par[0]=8.316476e-01;
+par[1]=1.600907e+00;
+par[2]=7.728447e+00;
+par[3]=6.235622e-02;
+par[4]=1.136209e+01;
+par[5]=-1.495764e-06;
+par[6]=-2.536119e+00;
+par[7]=3.416031e+00;
+
+ return scale*MeandEdxTR(&bg, par);
}
Double_t AliTRDdEdxBaseUtils::Q0MeanTRDPbPb(const Double_t bg)
static Int_t GetNtracklet(const AliESDEvent *esd);
static AliTRDtrackV1 * GetTRDtrackV1(const AliESDtrack * esdtrack);
static Bool_t IsInSameStack(const AliTRDtrackV1 *trdtrack);
- static Bool_t GetFirstSectorStackMomentum(const AliTRDtrackV1 *trdtrack, Int_t & isec, Int_t & istk, Double_t & mom);
+ static AliTRDseedV1 * GetLastTracklet(const AliTRDtrackV1 *trdtrack);
+ static AliTRDseedV1 * GetFirstSectorStackMomentum(const AliTRDtrackV1 *trdtrack, Int_t & isec, Int_t & istk, Double_t & mom);
+ static Double_t GetDeltaPhi(const AliTRDseedV1 *tracklet);
//===================================================================================
// Detector, Data and Control Constant
//===================================================================================
// dEdx Parameterization
//===================================================================================
-
+ static void FastFitdEdxTR(TH1 * hh);
+
static Double_t MeandEdx(const Double_t * xx, const Double_t * par);
static Double_t MeanTR(const Double_t * xx, const Double_t * par);
static Double_t MeandEdxTR(const Double_t * xx, const Double_t * par);
metaData->SetObjectClassName("TObjArray");
metaData->SetResponsible("Raphaelle Bailhache and Xianguo Lu");
- AliCDBId id1("TRD/Calib/PHQ", 0, run<0 ? 999999999 : run);
+ AliCDBId id1("TRD/Calib/PHQ", run<0? 0 : run , run<0 ? 999999999 : run);
AliCDBStorage * gStorage = AliCDBManager::Instance()->GetStorage(path);
gStorage->Put(arr8, id1, metaData);
static Int_t GetArrayClusterQ(const Bool_t kinvq, TVectorD *arrayQ, TVectorD *arrayX, const AliTRDtrackV1 *trdtrack, Int_t timeBin0=-1, Int_t timeBin1=1000, Int_t tstep=1);
static Int_t UpdateArrayX(const Int_t ncls, TVectorD* arrayX);
- private:
static Double_t GetAngularCorrection(const AliTRDseedV1 *seed);
+
+ private:
static Double_t GetPadGain(const Int_t det, const Int_t icol, const Int_t irow);
static Double_t GetRNDClusterQ(AliTRDcluster *cl);
static Double_t GetClusterQ(const Bool_t kinvq, const AliTRDseedV1 * seed, const Int_t itb);