]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updates (Jacek)
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 May 2009 09:15:31 +0000 (09:15 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 May 2009 09:15:31 +0000 (09:15 +0000)
M      AliPerformanceTPC.cxx (bug fix)
M      macros/RunPerformanceTask.C (naming convention)
M      macros/AddPerformanceTask.C (naming convention)
M      AliPerformanceEff.cxx (proper description)
M      AliPerformanceObject.cxx (new functionality)
M      AliPerformanceRes.h (proper histogram description)
M      AliPerformanceObject.h (new functionality)
M      AliPerformanceRes.cxx (modified Analyse() function)

PWG1/AliPerformanceEff.cxx
PWG1/AliPerformanceObject.cxx
PWG1/AliPerformanceObject.h
PWG1/AliPerformanceRes.cxx
PWG1/AliPerformanceRes.h
PWG1/AliPerformanceTPC.cxx
PWG1/macros/AddPerformanceTask.C
PWG1/macros/RunPerformanceTask.C

index 2b00bfed63af3822240973ae1083f4b6486b8dc7..086d8674463eb104725dff2a7ad90d39754fe1eb 100644 (file)
@@ -16,8 +16,7 @@
   gROOT->LoadMacro("$ALICE_ROOT/PWG1/Macros/LoadMyLibs.C");\r
   LoadMyLibs();\r
   TFile f("Output.root");\r
-  //AliPerformanceEff * compObj = (AliPerformanceEff*)f.Get("AliPerformanceEff");\r
-  AliPerformanceEff * compObj = (AliPerformanceEff*)cOutput->FindObject("AliPerformanceEff");\r
+  AliPerformanceEff * compObj = (AliPerformanceEff*)coutput->FindObject("AliPerformanceEff");\r
 \r
   // Analyse comparison data\r
   compObj->Analyse();\r
index 7737b11169b04dfd520b159e2e78577afcf441f5..8c416ba93a7a94c92e54330ace6ced87c2aa5bac 100644 (file)
@@ -61,7 +61,7 @@ AliPerformanceObject::~AliPerformanceObject(){
 }
 
 //_____________________________________________________________________________
-void AliPerformanceObject::DrawHisto(Bool_t logz) {
+void AliPerformanceObject::PrintHisto(Bool_t logz, Char_t * outFileName) {
   // draw all histograms from the folder 
   // and store them in the output *.ps file
  
@@ -77,7 +77,10 @@ void AliPerformanceObject::DrawHisto(Bool_t logz) {
 
   char fname[256];
   const char* suffix=".ps"; 
-  sprintf(fname,"%s%s",folder->GetName(),suffix);
+
+  if(outFileName) sprintf(fname,"%s",outFileName);
+  else sprintf(fname,"%s%s",folder->GetName(),suffix);
+  
   TPostScript *ps = new TPostScript(fname,112);
   Printf("Histograms are stored in %s", fname); 
   TIter iter(folder->GetListOfFolders());
index 67c71c7bf56d226419bcb3aa256f65f04407bb89..229521e77fa355c85a83d480ccd8ca84b2b6ca37 100644 (file)
@@ -52,7 +52,7 @@ public :
   Bool_t IsHptGenerator() const {return fHptGenerator;}\r
 \r
   // draw all histograms from the folder\r
-  void DrawHisto(Bool_t logz = kTRUE); \r
+  void PrintHisto(Bool_t logz = kTRUE, Char_t * outFileName = "PerformanceQAHisto.ps"); \r
 \r
   // create log axis \r
   Double_t *CreateLogAxis(Int_t nbins, Double_t xmin, Double_t xmax); \r
@@ -60,7 +60,7 @@ public :
 protected: \r
 \r
  // analysis mode\r
- Int_t fAnalysisMode;  // 0-TPC, 1-TPCITS, 2-Constrained\r
+ Int_t fAnalysisMode;  // 0-TPC, 1-TPCITS, 2-Constrained, 3 - TPC inner wall\r
 \r
  // hpt generator\r
  Bool_t fHptGenerator; // hpt event generator\r
index 021b603696de28111300e063f5c2a3c430f92617..b6a74a78275eb3d0a8e412922c8dbc1a12f9d28e 100644 (file)
@@ -17,8 +17,7 @@
   LoadMyLibs();
 
   TFile f("Output.root");
-  //AliPerformanceRes * compObj = (AliPerformanceRes*)f.Get("AliPerformanceRes");
-  AliPerformanceRes * compObj = (AliPerformanceRes*)cOutput->FindObject("AliPerformanceRes");
+  AliPerformanceRes * compObj = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
  
   // analyse comparison data
   compObj->Analyse();
@@ -144,34 +143,40 @@ void AliPerformanceRes::Init(){
     zMin = -100.; zMax = 100.; 
   }
 
-  // res_y:res_z:res_phi,res_lambda:res_1pt:y:z:eta:phi:pt
-  Int_t binsResolHisto[10]={100,100,100,100,100,25,50,30,144,nPtBins};
-  Double_t minResolHisto[10]={-1.,-1.,-0.03,-0.03,-0.2, yMin, zMin,-1.5,0.,ptMin};
-  Double_t maxResolHisto[10]={ 1., 1., 0.03, 0.03, 0.2, yMax, zMax, 1.5,2.*TMath::Pi(), ptMax};
+  // res_y:res_z:res_phi,res_lambda:res_pt:y:z:eta:phi:pt
+  Int_t binsResolHisto[10]={100,100,100,100,100,25,50,144,30,nPtBins};
+  Double_t minResolHisto[10]={-1.,-1.,-0.03,-0.03,-0.2, yMin, zMin, 0., -1.5, ptMin};
+  Double_t maxResolHisto[10]={ 1., 1., 0.03, 0.03, 0.2, yMax, zMax, 2.*TMath::Pi(), 1.5, ptMax};
 
-  fResolHisto = new THnSparseF("fResolHisto","res_y:res_z:res_phi:res_lambda:res_1pt:y:z:eta:phi:pt",10,binsResolHisto,minResolHisto,maxResolHisto);
+  fResolHisto = new THnSparseF("fResolHisto","res_y:res_z:res_phi:res_lambda:res_pt:y:z:phi:eta:pt",10,binsResolHisto,minResolHisto,maxResolHisto);
   fResolHisto->SetBinEdges(9,binsPt);
 
   fResolHisto->GetAxis(0)->SetTitle("y-y_{mc} (cm)");
   fResolHisto->GetAxis(1)->SetTitle("z-z_{mc} (cm)");
   fResolHisto->GetAxis(2)->SetTitle("#phi-#phi_{mc} (rad)");
   fResolHisto->GetAxis(3)->SetTitle("#lambda-#lambda_{mc} (rad)");
-  fResolHisto->GetAxis(4)->SetTitle("(p_{Tmc}/p_{T}-1)");
+  fResolHisto->GetAxis(4)->SetTitle("(p_{T}/p_{Tmc}-1)");
   fResolHisto->GetAxis(5)->SetTitle("y_{mc} (cm)");
   fResolHisto->GetAxis(6)->SetTitle("z_{mc} (cm)");
-  fResolHisto->GetAxis(7)->SetTitle("#eta_{mc}");
-  fResolHisto->GetAxis(8)->SetTitle("#phi_{mc} (rad)");
+  fResolHisto->GetAxis(7)->SetTitle("#phi_{mc} (rad)");
+  fResolHisto->GetAxis(8)->SetTitle("#eta_{mc}");
   fResolHisto->GetAxis(9)->SetTitle("p_{Tmc} (GeV/c)");
   fResolHisto->Sumw2();
 
-  //pull_y:pull_z:pull_lambda:pull_phi:pull_1pt:y:z:eta:phi:pt
-  Int_t binsPullHisto[10]={100,100,100,100,100,50,50,30,144,nPtBins};
-  Double_t minPullHisto[10]={-5.,-5.,-5.,-5.,-5.,yMin, zMin,-1.5, 0., ptMin};
-  Double_t maxPullHisto[10]={ 5., 5., 5., 5., 5., yMax, zMax, 1.5, 2.*TMath::Pi(),ptMax};
+  ////pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt
+  //Int_t binsPullHisto[10]={100,100,100,100,100,50,50,30,144,nPtBins};
+  //Double_t minPullHisto[10]={-5.,-5.,-5.,-5.,-5.,yMin, zMin,-1.5, 0., ptMin};
+  //Double_t maxPullHisto[10]={ 5., 5., 5., 5., 5., yMax, zMax, 1.5, 2.*TMath::Pi(),ptMax};
+  //fPullHisto = new THnSparseF("fPullHisto","pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt",10,binsPullHisto,minPullHisto,maxPullHisto);
 
-  fPullHisto = new THnSparseF("fPullHisto","pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt",10,binsPullHisto,minPullHisto,maxPullHisto);
-  if(!IsHptGenerator()) fPullHisto->SetBinEdges(9,binsPt);
+  //pull_y:pull_z:pull_snp:pull_tgl:pull_1pt:y:z:snp:tgl:1pt
+  Int_t binsPullHisto[10]={100,100,100,100,100,50,50,50,50,nPtBins};
+  Double_t minPullHisto[10]={-5.,-5.,-5.,-5.,-5.,yMin, zMin,-1., -2.0, ptMin};
+  Double_t maxPullHisto[10]={ 5., 5., 5., 5., 5., yMax, zMax, 1., 2.0, ptMax};
+  fPullHisto = new THnSparseF("fPullHisto","pull_y:pull_z:pull_y:pull_z:pull_snp:pull_tgl:pull_1pt:y:z:snp:tgl:1pt",10,binsPullHisto,minPullHisto,maxPullHisto);
 
+  /*
+  if(!IsHptGenerator()) fPullHisto->SetBinEdges(9,bins1Pt);
   fPullHisto->GetAxis(0)->SetTitle("(y-y_{mc})/#sigma");
   fPullHisto->GetAxis(1)->SetTitle("(z-z_{mc})/#sigma");
   fPullHisto->GetAxis(2)->SetTitle("(#phi-#phi_{mc})/#sigma");
@@ -183,6 +188,19 @@ void AliPerformanceRes::Init(){
   fPullHisto->GetAxis(8)->SetTitle("#phi_{mc} (rad)");
   fPullHisto->GetAxis(9)->SetTitle("p_{Tmc} (GeV/c)");
   fPullHisto->Sumw2();
+  */
+
+  fPullHisto->GetAxis(0)->SetTitle("(y-y_{mc})/#sigma");
+  fPullHisto->GetAxis(1)->SetTitle("(z-z_{mc})/#sigma");
+  fPullHisto->GetAxis(2)->SetTitle("(sin#phi-sin#phi_{mc})/#sigma");
+  fPullHisto->GetAxis(3)->SetTitle("(tan#lambda-tan#lambda_{mc})/#sigma");
+  fPullHisto->GetAxis(4)->SetTitle("(p_{Tmc}/p_{T}-1)/#sigma");
+  fPullHisto->GetAxis(5)->SetTitle("y_{mc} (cm)");
+  fPullHisto->GetAxis(6)->SetTitle("z_{mc} (cm)");
+  fPullHisto->GetAxis(7)->SetTitle("sin#phi_{mc}");
+  fPullHisto->GetAxis(8)->SetTitle("tan#lambda_{mc}");
+  fPullHisto->GetAxis(9)->SetTitle("1/p_{Tmc} (GeV/c)^{-1}");
+  fPullHisto->Sumw2();
 
   // Init cuts 
   if(!fCutsMC) 
@@ -219,13 +237,15 @@ void AliPerformanceRes::ProcessTPC(AliStack* const stack, AliESDtrack *const esd
   if(particle->GetPDG()->Charge()==0) return;
   //printf("charge %d \n",particle->GetPDG()->Charge());
 
-  Float_t delta1PtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
+  Float_t deltaPtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
   Float_t pull1PtTPC, pullYTPC, pullZTPC, pullPhiTPC, pullLambdaTPC; 
 
   Float_t mceta =  particle->Eta();
   Float_t mcphi =  particle->Phi();
   if(mcphi<0) mcphi += 2.*TMath::Pi();
   Float_t mcpt = particle->Pt();
+  Float_t mcsnp = TMath::Sin(TMath::ATan2(particle->Py(),particle->Px()));
+  Float_t mctgl = TMath::Tan(TMath::ATan2(particle->Pz(),particle->Pt()));
 
   // nb. TPC clusters cut
   if (esdTrack->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return;
@@ -233,29 +253,32 @@ void AliPerformanceRes::ProcessTPC(AliStack* const stack, AliESDtrack *const esd
   // select primaries
   if(TMath::Abs(dca[0])<fCutsRC->GetMaxDCAToVertexXY() && TMath::Abs(dca[1])<fCutsRC->GetMaxDCAToVertexZ()) 
   { 
+    if(mcpt == 0) return;
+    
     deltaYTPC= track->GetY()-particle->Vy();
     deltaZTPC = track->GetZ()-particle->Vz();
     deltaLambdaTPC = TMath::ATan2(track->Pz(),track->Pt())-TMath::ATan2(particle->Pz(),particle->Pt());
     deltaPhiTPC = TMath::ATan2(track->Py(),track->Px())-TMath::ATan2(particle->Py(),particle->Px());
-    delta1PtTPC = (track->OneOverPt()-1./mcpt)*mcpt;
+    //delta1PtTPC = (track->OneOverPt()-1./mcpt)*mcpt;
+    deltaPtTPC = (track->Pt()-mcpt) / mcpt;
 
     pullYTPC= (track->GetY()-particle->Vy()) / TMath::Sqrt(track->GetSigmaY2());
     pullZTPC = (track->GetZ()-particle->Vz()) / TMath::Sqrt(track->GetSigmaZ2());
  
-    Double_t sigma_lambda = 1./(1.+track->GetTgl()*track->GetTgl()) * TMath::Sqrt(track->GetSigmaTgl2()); 
-    Double_t sigma_phi = 1./TMath::Sqrt(1-track->GetSnp()*track->GetSnp()) * TMath::Sqrt(track->GetSigmaSnp2());
-    pullLambdaTPC = deltaLambdaTPC / sigma_lambda;
-    pullPhiTPC = deltaPhiTPC / sigma_phi;
+    //Double_t sigma_lambda = 1./(1.+track->GetTgl()*track->GetTgl()) * TMath::Sqrt(track->GetSigmaTgl2()); 
+    //Double_t sigma_phi = 1./TMath::Sqrt(1-track->GetSnp()*track->GetSnp()) * TMath::Sqrt(track->GetSigmaSnp2());
+    pullPhiTPC = (track->GetSnp() - mcsnp) / TMath::Sqrt(track->GetSigmaSnp2());
+    pullLambdaTPC = (track->GetTgl() - mctgl) / TMath::Sqrt(track->GetSigmaTgl2());
 
     //pullLambdaTPC = deltaLambdaTPC / TMath::Sqrt(track->GetSigmaTgl2());
     //pullPhiTPC = deltaPhiTPC / TMath::Sqrt(track->GetSigmaSnp2()); 
     if (mcpt) pull1PtTPC = (track->OneOverPt()-1./mcpt) / TMath::Sqrt(track->GetSigma1Pt2());
     else pull1PtTPC = 0.;
 
-    Double_t vResolHisto[10] = {deltaYTPC,deltaZTPC,deltaPhiTPC,deltaLambdaTPC,delta1PtTPC,particle->Vy(),particle->Vz(),mceta,mcphi,mcpt};
+    Double_t vResolHisto[10] = {deltaYTPC,deltaZTPC,deltaPhiTPC,deltaLambdaTPC,deltaPtTPC,particle->Vy(),particle->Vz(),mcphi,mceta,mcpt};
     fResolHisto->Fill(vResolHisto);
 
-    Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mceta,mcphi,mcpt};
+    Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mcsnp,mctgl,1./mcpt};
     fPullHisto->Fill(vPullHisto);
   }
 }
@@ -286,18 +309,50 @@ void AliPerformanceRes::ProcessTPCITS(AliStack* const stack, AliESDtrack *const
   Float_t mcphi =  particle->Phi();
   if(mcphi<0) mcphi += 2.*TMath::Pi();
   Float_t mcpt = particle->Pt();
+  Float_t mcsnp = TMath::Sin(TMath::ATan2(particle->Py(),particle->Px()));
+  Float_t mctgl = TMath::Tan(TMath::ATan2(particle->Pz(),particle->Pt()));
 
   if ((esdTrack->GetStatus()&AliESDtrack::kTPCrefit)==0) return; // TPC refit
   if (esdTrack->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return; // min. nb. TPC clusters  
   Int_t clusterITS[200];
   if(esdTrack->GetITSclusters(clusterITS)<fCutsRC->GetMinNClustersITS()) return;  // min. nb. ITS clusters
 
-  Float_t delta1PtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
+  Float_t deltaPtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
   Float_t pull1PtTPC, pullYTPC, pullZTPC, pullPhiTPC, pullLambdaTPC; 
 
   // select primaries
   if(TMath::Abs(dca[0])<fCutsRC->GetMaxDCAToVertexXY() && TMath::Abs(dca[1])<fCutsRC->GetMaxDCAToVertexZ()) 
   { 
+    if(mcpt == 0) return;
+    
+    deltaYTPC= esdTrack->GetY()-particle->Vy();
+    deltaZTPC = esdTrack->GetZ()-particle->Vz();
+    deltaLambdaTPC = TMath::ATan2(esdTrack->Pz(),esdTrack->Pt())-TMath::ATan2(particle->Pz(),particle->Pt());
+    deltaPhiTPC = TMath::ATan2(esdTrack->Py(),esdTrack->Px())-TMath::ATan2(particle->Py(),particle->Px());
+    //delta1PtTPC = (esdTrack->OneOverPt()-1./mcpt)*mcpt;
+    deltaPtTPC = (esdTrack->Pt()-mcpt) / mcpt;
+
+    pullYTPC= (esdTrack->GetY()-particle->Vy()) / TMath::Sqrt(esdTrack->GetSigmaY2());
+    pullZTPC = (esdTrack->GetZ()-particle->Vz()) / TMath::Sqrt(esdTrack->GetSigmaZ2());
+    //Double_t sigma_lambda = 1./(1.+esdTrack->GetTgl()*esdTrack->GetTgl()) * TMath::Sqrt(esdTrack->GetSigmaTgl2()); 
+    //Double_t sigma_phi = 1./TMath::Sqrt(1-esdTrack->GetSnp()*esdTrack->GetSnp()) * TMath::Sqrt(esdTrack->GetSigmaSnp2());
+    pullPhiTPC = (esdTrack->GetSnp() - mcsnp) / TMath::Sqrt(esdTrack->GetSigmaSnp2());
+    pullLambdaTPC = (esdTrack->GetTgl() - mctgl) / TMath::Sqrt(esdTrack->GetSigmaTgl2());
+
+    //pullLambdaTPC = deltaLambdaTPC / TMath::Sqrt(esdTrack->GetSigmaTgl2());
+    //pullPhiTPC = deltaPhiTPC / TMath::Sqrt(esdTrack->GetSigmaSnp2()); 
+    if (mcpt) pull1PtTPC = (esdTrack->OneOverPt()-1./mcpt) / TMath::Sqrt(esdTrack->GetSigma1Pt2());
+    else pull1PtTPC = 0.;
+
+    Double_t vResolHisto[10] = {deltaYTPC,deltaZTPC,deltaPhiTPC,deltaLambdaTPC,deltaPtTPC,particle->Vy(),particle->Vz(),mcphi,mceta,mcpt};
+    fResolHisto->Fill(vResolHisto);
+
+    Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mcsnp,mctgl,1./mcpt};
+    fPullHisto->Fill(vPullHisto);
+
+   
+    /*
     deltaYTPC= esdTrack->GetY()-particle->Vy();
     deltaZTPC = esdTrack->GetZ()-particle->Vz();
     deltaLambdaTPC = TMath::ATan2(esdTrack->Pz(),esdTrack->Pt())-TMath::ATan2(particle->Pz(),particle->Pt());
@@ -322,6 +377,7 @@ void AliPerformanceRes::ProcessTPCITS(AliStack* const stack, AliESDtrack *const
 
     Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mceta,mcphi,mcpt};
     fPullHisto->Fill(vPullHisto);
+    */
   }
 }
 
@@ -355,16 +411,49 @@ void AliPerformanceRes::ProcessConstrained(AliStack* const stack, AliESDtrack *c
   Float_t mcphi =  particle->Phi();
   if(mcphi<0) mcphi += 2.*TMath::Pi();
   Float_t mcpt = particle->Pt();
+  Float_t mcsnp = TMath::Sin(TMath::ATan2(particle->Py(),particle->Px()));
+  Float_t mctgl = TMath::Tan(TMath::ATan2(particle->Pz(),particle->Pt()));
 
   if ((esdTrack->GetStatus()&AliESDtrack::kTPCrefit)==0) return; // TPC refit
   if (esdTrack->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return; // min. nb. TPC clusters
 
-  Float_t delta1PtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
+  Float_t deltaPtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
   Float_t pull1PtTPC, pullYTPC, pullZTPC, pullPhiTPC, pullLambdaTPC; 
 
   // select primaries
   if(TMath::Abs(dca[0])<fCutsRC->GetMaxDCAToVertexXY() && TMath::Abs(dca[1])<fCutsRC->GetMaxDCAToVertexZ()) 
   { 
+
+    if(mcpt == 0) return;
+    
+    deltaYTPC= track->GetY()-particle->Vy();
+    deltaZTPC = track->GetZ()-particle->Vz();
+    deltaLambdaTPC = TMath::ATan2(track->Pz(),track->Pt())-TMath::ATan2(particle->Pz(),particle->Pt());
+    deltaPhiTPC = TMath::ATan2(track->Py(),track->Px())-TMath::ATan2(particle->Py(),particle->Px());
+    //delta1PtTPC = (track->OneOverPt()-1./mcpt)*mcpt;
+    deltaPtTPC = (track->Pt()-mcpt) / mcpt;
+
+    pullYTPC= (track->GetY()-particle->Vy()) / TMath::Sqrt(track->GetSigmaY2());
+    pullZTPC = (track->GetZ()-particle->Vz()) / TMath::Sqrt(track->GetSigmaZ2());
+    //Double_t sigma_lambda = 1./(1.+track->GetTgl()*track->GetTgl()) * TMath::Sqrt(track->GetSigmaTgl2()); 
+    //Double_t sigma_phi = 1./TMath::Sqrt(1-track->GetSnp()*track->GetSnp()) * TMath::Sqrt(track->GetSigmaSnp2());
+    pullPhiTPC = (track->GetSnp() - mcsnp) / TMath::Sqrt(track->GetSigmaSnp2());
+    pullLambdaTPC = (track->GetTgl() - mctgl) / TMath::Sqrt(track->GetSigmaTgl2());
+
+    //pullLambdaTPC = deltaLambdaTPC / TMath::Sqrt(track->GetSigmaTgl2());
+    //pullPhiTPC = deltaPhiTPC / TMath::Sqrt(track->GetSigmaSnp2()); 
+    if (mcpt) pull1PtTPC = (track->OneOverPt()-1./mcpt) / TMath::Sqrt(track->GetSigma1Pt2());
+    else pull1PtTPC = 0.;
+
+    Double_t vResolHisto[10] = {deltaYTPC,deltaZTPC,deltaPhiTPC,deltaLambdaTPC,deltaPtTPC,particle->Vy(),particle->Vz(),mcphi,mceta,mcpt};
+    fResolHisto->Fill(vResolHisto);
+
+    Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mcsnp,mctgl,1./mcpt};
+    fPullHisto->Fill(vPullHisto);
+
+    /*
+
     deltaYTPC= track->GetY()-particle->Vy();
     deltaZTPC = track->GetZ()-particle->Vz();
     deltaLambdaTPC = TMath::ATan2(track->Pz(),track->Pt())-TMath::ATan2(particle->Pz(),particle->Pt());
@@ -390,6 +479,8 @@ void AliPerformanceRes::ProcessConstrained(AliStack* const stack, AliESDtrack *c
 
     Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,particle->Vy(),particle->Vz(),mceta,mcphi,mcpt};
     fPullHisto->Fill(vPullHisto);
+
+    */
   }
 }
  
@@ -440,16 +531,49 @@ void AliPerformanceRes::ProcessInnerTPC(AliMCEvent *const mcEvent, AliESDtrack *
   Float_t mcphi =  ref0->Phi();
   if(mcphi<0) mcphi += 2.*TMath::Pi();
   Float_t mcpt = ref0->Pt();
+  Float_t mcsnp = TMath::Sin(TMath::ATan2(ref0->Py(),ref0->Px()));
+  Float_t mctgl = TMath::Tan(TMath::ATan2(ref0->Pz(),ref0->Pt()));
 
   if ((esdTrack->GetStatus()&AliESDtrack::kTPCrefit)==0) return; // TPC refit
   if (esdTrack->GetTPCNcls()<fCutsRC->GetMinNClustersTPC()) return; // min. nb. TPC clusters
 
-  Float_t delta1PtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
+  Float_t deltaPtTPC, deltaYTPC, deltaZTPC, deltaPhiTPC, deltaLambdaTPC; 
   Float_t pull1PtTPC, pullYTPC, pullZTPC, pullPhiTPC, pullLambdaTPC; 
 
   // select primaries
   if(TMath::Abs(dca[0])<fCutsRC->GetMaxDCAToVertexXY() && TMath::Abs(dca[1])<fCutsRC->GetMaxDCAToVertexZ()) 
   { 
+    if(mcpt == 0) return;
+    
+    deltaYTPC= track->GetY(); // already rotated
+    deltaZTPC = track->GetZ()-ref0->Z();
+    deltaLambdaTPC = TMath::ATan2(track->Pz(),track->Pt())-TMath::ATan2(ref0->Pz(),ref0->Pt());
+    deltaPhiTPC = TMath::ATan2(track->Py(),track->Px())-TMath::ATan2(ref0->Py(),ref0->Px());
+    //delta1PtTPC = (track->OneOverPt()-1./mcpt)*mcpt;
+    deltaPtTPC = (track->Pt()-mcpt) / mcpt;
+
+    pullYTPC= track->GetY() / TMath::Sqrt(track->GetSigmaY2());
+    pullZTPC = (track->GetZ()-ref0->Z()) / TMath::Sqrt(track->GetSigmaZ2());
+    //Double_t sigma_lambda = 1./(1.+track->GetTgl()*track->GetTgl()) * TMath::Sqrt(track->GetSigmaTgl2()); 
+    //Double_t sigma_phi = 1./TMath::Sqrt(1-track->GetSnp()*track->GetSnp()) * TMath::Sqrt(track->GetSigmaSnp2());
+    pullPhiTPC = (track->GetSnp() - mcsnp) / TMath::Sqrt(track->GetSigmaSnp2());
+    pullLambdaTPC = (track->GetTgl() - mctgl) / TMath::Sqrt(track->GetSigmaTgl2());
+
+    //pullLambdaTPC = deltaLambdaTPC / TMath::Sqrt(track->GetSigmaTgl2());
+    //pullPhiTPC = deltaPhiTPC / TMath::Sqrt(track->GetSigmaSnp2()); 
+    if (mcpt) pull1PtTPC = (track->OneOverPt()-1./mcpt) / TMath::Sqrt(track->GetSigma1Pt2());
+    else pull1PtTPC = 0.;
+
+    Double_t vResolHisto[10] = {deltaYTPC,deltaZTPC,deltaPhiTPC,deltaLambdaTPC,deltaPtTPC,ref0->Y(),ref0->Z(),mcphi,mceta,mcpt};
+    fResolHisto->Fill(vResolHisto);
+
+    Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,ref0->Y(),ref0->Z(),mcsnp,mctgl,1./mcpt};
+    fPullHisto->Fill(vPullHisto);
+
+
+    /*
+
     //deltaYTPC= track->GetY()-ref0->Y();
     deltaYTPC= track->GetY(); // it corresponds to deltaY after alpha rotation 
     deltaZTPC = track->GetZ()-ref0->Z();
@@ -478,6 +602,8 @@ void AliPerformanceRes::ProcessInnerTPC(AliMCEvent *const mcEvent, AliESDtrack *
 
     Double_t vPullHisto[10] = {pullYTPC,pullZTPC,pullPhiTPC,pullLambdaTPC,pull1PtTPC,ref0->Y(),ref0->Z(),mceta,mcphi,mcpt};
     fPullHisto->Fill(vPullHisto);
+
+    */
   }
 
   if(track) delete track;
@@ -575,7 +701,7 @@ TH1F* AliPerformanceRes::MakeResol(TH2F * his, Int_t integ, Bool_t type, Int_t c
 }
 
 //_____________________________________________________________________________
-void AliPerformanceRes::Analyse(){
+void AliPerformanceRes::Analyse() {
   // Analyse comparison information and store output histograms
   // in the folder "folderRes"
   //
@@ -595,7 +721,7 @@ void AliPerformanceRes::Analyse(){
   {
     for(Int_t j=5; j<10; j++) 
     {
-      if(j!=7) fResolHisto->GetAxis(7)->SetRangeUser(-0.9,0.9); // eta window
+      if(j!=8) fResolHisto->GetAxis(8)->SetRangeUser(-0.9,0.9); // eta window
       fResolHisto->GetAxis(9)->SetRangeUser(0.16,10.); // pt threshold
       if(GetAnalysisMode() == 3) fResolHisto->GetAxis(5)->SetRangeUser(-80.,80.); // y range
 
@@ -603,16 +729,6 @@ void AliPerformanceRes::Analyse(){
 
       h = AliPerformanceRes::MakeResol(h2D,1,0,100);
       sprintf(name,"h_res_%d_vs_%d",i,j);
-
-      /*
-      if(i<2) {
-        h->SetMinimum(0.);
-        h->SetMaximum(1.);
-      } else {
-        h->SetMinimum(0.);
-        h->SetMaximum(0.2);
-      }
-      */
       h->SetName(name);
 
       h->GetXaxis()->SetTitle(fResolHisto->GetAxis(j)->GetTitle());
@@ -627,17 +743,6 @@ void AliPerformanceRes::Analyse(){
       h = AliPerformanceRes::MakeResol(h2D,1,1,100);
       //h = (TH1F*)arr->At(1);
       sprintf(name,"h_mean_res_%d_vs_%d",i,j);
-      /*
-      h->SetMinimum(-0.05);
-      h->SetMaximum(0.05);
-      if(i<2) {
-        h->SetMinimum(-0.05);
-        h->SetMaximum(0.05);
-      } else {
-        h->SetMinimum(-0.02);
-        h->SetMaximum(0.02);
-      }
-      */
       h->SetName(name);
 
       h->GetXaxis()->SetTitle(fResolHisto->GetAxis(j)->GetTitle());
@@ -650,20 +755,19 @@ void AliPerformanceRes::Analyse(){
       if(j==9) h->SetBit(TH1::kLogX);    
       aFolderObj->Add(h);
 
-      fResolHisto->GetAxis(7)->SetRangeUser(-1.5,1.5);
+      fResolHisto->GetAxis(8)->SetRangeUser(-1.5,1.5);
       fResolHisto->GetAxis(9)->SetRangeUser(0.0,10.);
 
       //
-      if(j!=7) fPullHisto->GetAxis(7)->SetRangeUser(-0.9,0.9); // eta window
-      fPullHisto->GetAxis(9)->SetRangeUser(0.16,10.);  // pt threshold
+      if(j!=8) fPullHisto->GetAxis(8)->SetRangeUser(-1.0,1.0); // theta window
+      else  fPullHisto->GetAxis(8)->SetRangeUser(-1.5,1.5); // theta window
+      fPullHisto->GetAxis(9)->SetRangeUser(0.0,10.);  // pt threshold
       if(GetAnalysisMode() == 3) fPullHisto->GetAxis(5)->SetRangeUser(-80.,80.); // y range
 
       h2D = (TH2F*)fPullHisto->Projection(i,j);
 
       h = AliPerformanceRes::MakeResol(h2D,1,0,100);
       sprintf(name,"h_pull_%d_vs_%d",i,j);
-      //h->SetMinimum(0.);
-      //h->SetMaximum(2.);
       h->SetName(name);
 
       h->GetXaxis()->SetTitle(fPullHisto->GetAxis(j)->GetTitle());
@@ -672,13 +776,11 @@ void AliPerformanceRes::Analyse(){
       sprintf(title,"%s vs %s",title,fPullHisto->GetAxis(j)->GetTitle());
       h->SetTitle(title);
 
-      if(j==9) h->SetBit(TH1::kLogX);    
+      //if(j==9) h->SetBit(TH1::kLogX);    
       aFolderObj->Add(h);
 
       h = AliPerformanceRes::MakeResol(h2D,1,1,100);
       sprintf(name,"h_mean_pull_%d_vs_%d",i,j);
-      //h->SetMinimum(-0.2);
-      //h->SetMaximum(0.2);
       h->SetName(name);
 
       h->GetXaxis()->SetTitle(fPullHisto->GetAxis(j)->GetTitle());
@@ -687,11 +789,8 @@ void AliPerformanceRes::Analyse(){
       sprintf(title,"%s vs %s",title,fPullHisto->GetAxis(j)->GetTitle());
       h->SetTitle(title);
 
-      if(j==9) h->SetBit(TH1::kLogX);    
+      //if(j==9) h->SetBit(TH1::kLogX);    
       aFolderObj->Add(h);
-
-      fPullHisto->GetAxis(7)->SetRangeUser(-1.5,1.5);
-      fPullHisto->GetAxis(9)->SetRangeUser(0.0,10.);
     }
   }
 
index 0415576740d4b717221417b7e3a658cc1eff76eb..b6912abcf9417e899c3c165d2e5aad17f8a0f6ca 100644 (file)
@@ -83,10 +83,11 @@ private:
   //
 
   // resolution histogram
-  THnSparseF *fResolHisto; //-> res_y:res_z:res_phi:res_lambda:res_1pt:y:z:eta:phi:pt
+  THnSparseF *fResolHisto; //-> res_y:res_z:res_phi:res_lambda:res_pt:y:z:phi:eta:pt
 
   // pull histogram
-  THnSparseF *fPullHisto;     //-> pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt
+  //THnSparseF *fPullHisto;  //-> pull_y:pull_z:pull_phi:pull_lambda:pull_1pt:y:z:eta:phi:pt
+  THnSparseF *fPullHisto;  //-> pull_y:pull_z:pull_snp:pull_tgl:pull_1pt:y:z:snp:tgl:1pt
 
   // Global cuts objects
   AliRecInfoCuts*  fCutsRC;      // selection cuts for reconstructed tracks
index 2895c5bb8b76eccd1da8e3203ba68fffa9eb3788..b7db9c347c23102ec00d38f45d6b91b767aae090 100644 (file)
@@ -169,9 +169,9 @@ void AliPerformanceTPC::ProcessTPC(AliStack* const stack, AliESDtrack *const esd
   esdTrack->GetImpactParametersTPC(dca,cov);
 
   //Float_t q = esdTrack->Charge();
-  Float_t pt = esdTrack->Pt();
-  Float_t eta = esdTrack->Eta();
-  Float_t phi = esdTrack->Phi();
+  Float_t pt = track->Pt();
+  Float_t eta = track->Eta();
+  Float_t phi = track->Phi();
   Int_t nClust = esdTrack->GetTPCclusters(0);
   Int_t nFindableClust = esdTrack->GetTPCNclsF();
 
index dd42c9b1ff63f099b49371442d4b496c13513433..94fa87161d1306259ad1af900295ac1117276991 100644 (file)
@@ -98,7 +98,7 @@ void AddPerformanceTask(AliAnalysisManager *mgr=0, Char_t *tpc="ALL")
     if(!(TSTTPCBIT(fSteerTPC, icomp))) continue;
     TString  s(fgkTPCtaskClassName[icomp]);
     if(s.CompareTo("AliPerformanceRes") == 0) {
-      task->AddPerformanceObject((perf = new AliPerformanceRes("AliPerformanceResTPCinner","AliPerformanceResTPCinner",kTPCInnerMode,fHpt)));
+      task->AddPerformanceObject((perf = new AliPerformanceRes("AliPerformanceResTPCInner","AliPerformanceResTPCInner",kTPCInnerMode,fHpt)));
     } else if (s.CompareTo("AliPerformanceDEdx") == 0) {
       task->AddPerformanceObject((perf = new AliPerformanceDEdx("AliPerformanceDEdxTPCInner","AliPerformanceDEdxTPCInner",kTPCInnerMode,fHpt)));
     } else {
index f2c551a3ba792bce6b588d21da0703d3d28ded72..6ca40214e5544ad56a72205a70a29bc6305f0acb 100644 (file)
@@ -20,7 +20,7 @@
   ProofEnableAliRoot("/u/jacek/alice/AliRoot/HEAD/");
 
   gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C");
-  TChain* chain = CreateESDChain("esd_v4-16-Rev-08-grid.txt", 200, 0);
+  TChain* chain = CreateESDChain("esd_v4-16-Rev-08-grid.txt", 500, 0);
   //TChain* chain = CreateESDChain("esd_TRUNK_flat_ideal_geom.txt", 50, 0);
   chain->Lookup();
 
   AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceResTPCInner");
   compObjRes->Analyse();
   compObjRes->GetAnalysisFolder()->ls("*");
-  compObjRes->DrawHisto();
+  compObjRes->PrintHisto(kTRUE,"PerformanceResTPCInnerQA.ps");
   TFile fout("AnalysedResTPCInner.root","recreate");
   compObjRes->GetAnalysisFolder()->Write();
   fout.Close();
   f.Close();
 
-  TFile f("TPC.Performance.root");
-  AliPerformanceRes * compObjRes = (AliPerformanceRes*)coutput->FindObject("AliPerformanceRes");
-  compObjRes->Analyse();
-  compObjRes->GetAnalysisFolder()->ls("*");
-  compObjRes->DrawHisto();
-  TFile fout("AnalysedResTPC.root","recreate");
-  compObjRes->GetAnalysisFolder()->Write();
-  fout.Close();
-  f.Close();
-
-
-
-
-
-
-
 
 */