Changes by Marta:
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Jan 2012 10:09:16 +0000 (10:09 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Jan 2012 10:09:16 +0000 (10:09 +0000)
Spectra: pTuncertainty from primaries and secondaries
QAMC: momentum resolution from comparison of pTrec and pTmc now also as function of pTrec
TrackQA: more histos to do studies on NCrossedRows and NCrossedRowsFit.

PWG4/JetTasks/AliPWG4HighPtQAMC.cxx
PWG4/JetTasks/AliPWG4HighPtQAMC.h
PWG4/JetTasks/AliPWG4HighPtSpectra.cxx
PWG4/JetTasks/AliPWG4HighPtSpectra.h
PWG4/JetTasks/AliPWG4HighPtTrackQA.cxx
PWG4/JetTasks/AliPWG4HighPtTrackQA.h

index 05b0bc2..1475c04 100644 (file)
@@ -83,6 +83,7 @@ AliPWG4HighPtQAMC::AliPWG4HighPtQAMC()
   fNPointTPCMultRec(0),
   fDeltaPtMultRec(0),
   fPtAllvsPtMC(0),
+  fPtAllminPtMCvsPtMC(0),
   fPtAllminPtMCvsPtAll(0),
   fPtAllvsPtMCvsMult(0),
   fPtAllminPtMCvsPtAllvsMult(0),
@@ -139,6 +140,7 @@ AliPWG4HighPtQAMC::AliPWG4HighPtQAMC(const char *name):
   fNPointTPCMultRec(0),
   fDeltaPtMultRec(0),
   fPtAllvsPtMC(0),
+  fPtAllminPtMCvsPtMC(0),
   fPtAllminPtMCvsPtAll(0),
   fPtAllvsPtMCvsMult(0),
   fPtAllminPtMCvsPtAllvsMult(0),
@@ -389,9 +391,14 @@ void AliPWG4HighPtQAMC::CreateOutputObjects() {
   fPtAllvsPtMC = new TH2F("fPtAllvsPtMC","fPtAllvsPtMC;p_{T,MC};p_{T,rec}",fgkNPtBins, binsPt,fgkNPtBins, binsPt);
   fHistList->Add(fPtAllvsPtMC);
 
+  fPtAllminPtMCvsPtMC = new TH2F("fPtAllminPtMCvsPtMC","PtAllminPtMCvsPtMC",fgkNPtBins, binsPt,fgkResPtBins,binsResPt);
+  fPtAllminPtMCvsPtMC->SetXTitle("p_{t}^{MC}");
+  fPtAllminPtMCvsPtMC->SetYTitle("(1/p_{t}^{rec}-1/p_{t}^{MC})/(1/p_{t}^{MC})");
+  fHistList->Add(fPtAllminPtMCvsPtMC);
+
   fPtAllminPtMCvsPtAll = new TH2F("fPtAllminPtMCvsPtAll","PtAllminPtMCvsPtAll",fgkNPtBins, binsPt,fgkResPtBins,binsResPt);
-  fPtAllminPtMCvsPtAll->SetXTitle("p_{t}^{MC}");
-  fPtAllminPtMCvsPtAll->SetYTitle("(1/p_{t}^{All}-1/p_{t}^{MC})/(1/p_{t}^{MC})");
+  fPtAllminPtMCvsPtAll->SetXTitle("p_{t}^{rec}");
+  fPtAllminPtMCvsPtAll->SetYTitle("(1/p_{t}^{rec}-1/p_{t}^{MC})/(1/p_{t}^{MC})");
   fHistList->Add(fPtAllminPtMCvsPtAll);
 
   fPtAllvsPtMCvsMult = new TH3F("fPtAllvsPtMCvsMult","fPtAllvsPtMCvsMult;p_{T,MC};p_{T,rec};N_{tracks}",fgkNPtBins, binsPt,fgkNPtBins, binsPt,fgkMultBins,binsMult);
@@ -746,7 +753,8 @@ void AliPWG4HighPtQAMC::Exec(Option_t *) {
       }
       fPtSelMC->Fill(ptMC);
       fPtAllvsPtMC->Fill(ptMC,pt);
-      fPtAllminPtMCvsPtAll->Fill(ptMC,(1./pt-1./ptMC)/(1./ptMC) );
+      fPtAllminPtMCvsPtMC->Fill(ptMC,(1./pt-1./ptMC)/(1./ptMC) );
+      fPtAllminPtMCvsPtAll->Fill(pt,(1./pt-1./ptMC)/(1./ptMC) );
       fPtAllminPtMCvsPtAllNPointTPC->Fill(ptMC,(1./pt-1./ptMC)/(1./ptMC),track->GetTPCNcls());
       fPtAllminPtMCvsPtAllNPointTPCIter1->Fill(ptMC,(1./pt-1./ptMC)/(1./ptMC),track->GetTPCNclsIter1());
       if(track->GetTPCNcls()>0.) 
index f882ced..310f213 100644 (file)
@@ -105,7 +105,8 @@ class AliPWG4HighPtQAMC: public AliAnalysisTask {
   TH2F *fDeltaPtMultRec;                       //! Delta pT versus pT of first track for multiple reconstructed tracks
 
   TH2F *fPtAllvsPtMC;                          //! Reconstructed momentum vs generated momentum
-  TH2F *fPtAllminPtMCvsPtAll;                  //! Momentum resolution (global vs MC)
+  TH2F *fPtAllminPtMCvsPtMC;                   //! Momentum resolution (global vs MC) as function of pTMC
+  TH2F *fPtAllminPtMCvsPtAll;                  //! Momentum resolution (global vs MC) as function of pTrec
   TH3F *fPtAllvsPtMCvsMult;                    //! Reconstructed momentum vs generated momentum vs multiplicity
   TH3F *fPtAllminPtMCvsPtAllvsMult;            //! Momentum resolution (global vs MC) vs multiplicity
   TH3F *fPtAllminPtMCvsPtAllNPointTPC;         //! Momentum resolution vs NPointTPC
index f425ab4..6ff7120 100644 (file)
@@ -86,7 +86,9 @@ AliPWG4HighPtSpectra::AliPWG4HighPtSpectra() : AliAnalysisTask("AliPWG4HighPtSpe
   fh1Xsec(0),
   fh1Trials(0),
   fh1PtHard(0),
-  fh1PtHardTrials(0)
+  fh1PtHardTrials(0),
+  fPtRelUncertainty1PtPrim(0x0),
+  fPtRelUncertainty1PtSec(0x0)
 {
   //
   //Default ctor
@@ -117,7 +119,9 @@ AliPWG4HighPtSpectra::AliPWG4HighPtSpectra(const Char_t* name) :
   fh1Xsec(0),
   fh1Trials(0),
   fh1PtHard(0),
-  fh1PtHardTrials(0)
+  fh1PtHardTrials(0),
+  fPtRelUncertainty1PtPrim(0x0),
+  fPtRelUncertainty1PtSec(0x0)
 {
   //
   // Constructor. Initialization of Inputs and Outputs
@@ -447,6 +451,10 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
            if(particle->GetPDG()->Charge()<0.) {
              fCFManagerNeg->GetParticleContainer()->Fill(containerInputRecMC,kStepReconstructedMC);
            }
+
+           //Fill pT resolution plots for primaries
+           fPtRelUncertainty1PtPrim->Fill(containerInputRec[0],containerInputRec[0]*track->GetSigma1Pt2());
+
          }
 
          //Container with secondaries
@@ -457,6 +465,8 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
            if(particle->GetPDG()->Charge()<0.) {
              fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepSecondaries);
            }
+           //Fill pT resolution plots for primaries
+           fPtRelUncertainty1PtSec->Fill(containerInputRec[0],containerInputRec[0]*track->GetSigma1Pt2());
          }
        }
        
@@ -468,7 +478,7 @@ void AliPWG4HighPtSpectra::Exec(Option_t *)
     }//track loop
   
 
-  //Fill MC containters if particles are findable
+  //Fill MC containers if particles are findable
   if(fMC) {
     for(int iPart = 1; iPart<(fMC->GetNumberOfPrimaries()); iPart++) {
       AliMCParticle *mcPart  = (AliMCParticle*)fMC->GetTrack(iPart);
@@ -678,12 +688,34 @@ void AliPWG4HighPtSpectra::CreateOutputObjects() {
   fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
   fHistList->Add(fh1PtHardTrials);
 
+  Int_t fgkNPtBins = 100;
+  Float_t kMinPt   = 0.;
+  Float_t kMaxPt   = 100.;
+  Double_t *binsPt = new Double_t[fgkNPtBins+1];
+  for(Int_t i=0; i<=fgkNPtBins; i++) binsPt[i]=(Double_t)kMinPt + (kMaxPt-kMinPt)/fgkNPtBins*(Double_t)i ;
+
+  Int_t fgkNRel1PtUncertaintyBins=50;
+  Float_t fgkRel1PtUncertaintyMin = 0.;
+  Float_t fgkRel1PtUncertaintyMax = 1.;
+
+  Double_t *binsRel1PtUncertainty=new Double_t[fgkNRel1PtUncertaintyBins+1];
+  for(Int_t i=0; i<=fgkNRel1PtUncertaintyBins; i++) binsRel1PtUncertainty[i]=(Double_t)fgkRel1PtUncertaintyMin + (fgkRel1PtUncertaintyMax-fgkRel1PtUncertaintyMin)/fgkNRel1PtUncertaintyBins*(Double_t)i ;
+
+  fPtRelUncertainty1PtPrim = new TH2F("fPtRelUncertainty1PtPrim","fPtRelUncertainty1PtPrim",fgkNPtBins,binsPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
+  fHistList->Add(fPtRelUncertainty1PtPrim);
+
+  fPtRelUncertainty1PtSec = new TH2F("fPtRelUncertainty1PtSec","fPtRelUncertainty1PtSec",fgkNPtBins,binsPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
+  fHistList->Add(fPtRelUncertainty1PtSec);
+
   TH1::AddDirectory(oldStatus);   
 
   PostData(0,fHistList);
   PostData(1,fCFManagerPos->GetParticleContainer());
   PostData(2,fCFManagerNeg->GetParticleContainer());
 
+  if(binsPt)                delete [] binsPt;
+  if(binsRel1PtUncertainty) delete [] binsRel1PtUncertainty;
+
 }
 
 #endif
index a98cd94..940653b 100644 (file)
@@ -26,6 +26,7 @@
 class TH1I;
 class TH1F;
 class TH1D;
+class TH2F;
 class TProfile;
 class TFile;
 class TList;
@@ -134,6 +135,9 @@ class AliPWG4HighPtSpectra : public AliAnalysisTask {
   TH1F*         fh1PtHard;                     //! pt hard of the event
   TH1F*         fh1PtHardTrials;               //! pt hard of the event
 
+  TH2F *fPtRelUncertainty1PtPrim;              //! Pt vs relUncertainty1Pt for primary particles
+  TH2F *fPtRelUncertainty1PtSec;               //! Pt vs relUncertainty1Pt for secondary particles
+
   ClassDef(AliPWG4HighPtSpectra,3);
 };
 
index 49b713f..ec62ecb 100644 (file)
@@ -111,10 +111,15 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA()
   fPtChi2PerClusterTPC(0x0),
   fPtChi2PerClusterTPCIter1(0x0),
   fPtNCrossedRows(0x0),
+  fPtNCrossedRowsPhi(0x0),
   fPtNCrossedRowsNClusF(0x0),
   fPtNCrRNCrRNClusF(0x0),
   fPtNCrossedRowsFit(0x0),
+  fPtNCrossedRowsFitPhi(0x0),
   fPtNCrossedRowsNClusFFit(0x0),
+  fNCrossedRowsNCrossedRowsFit(0x0),
+  fNClustersNCrossedRows(0x0),
+  fNClustersNCrossedRowsFit(0x0),
   fPtChi2Gold(0x0),
   fPtChi2GGC(0x0),
   fPtChi2GoldPhi(0x0),
@@ -198,10 +203,15 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name):
   fPtChi2PerClusterTPC(0x0),
   fPtChi2PerClusterTPCIter1(0x0),
   fPtNCrossedRows(0x0),
+  fPtNCrossedRowsPhi(0x0),
   fPtNCrossedRowsNClusF(0x0),
   fPtNCrRNCrRNClusF(0x0),
   fPtNCrossedRowsFit(0x0),
+  fPtNCrossedRowsFitPhi(0x0),
   fPtNCrossedRowsNClusFFit(0x0),
+  fNCrossedRowsNCrossedRowsFit(0x0),
+  fNClustersNCrossedRows(0x0),
+  fNClustersNCrossedRowsFit(0x0),
   fPtChi2Gold(0x0),
   fPtChi2GGC(0x0),
   fPtChi2GoldPhi(0x0),
@@ -550,6 +560,9 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() {
   fPtNCrossedRows = new TH2F("fPtNCrossedRows","fPtNCrossedRows",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
   fHistList->Add(fPtNCrossedRows);
 
+  fPtNCrossedRowsPhi = new TH3F("fPtNCrossedRowsPhi","fPtNCrossedRowsPhi",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNPhiBins,binsPhi);
+  fHistList->Add(fPtNCrossedRowsPhi);
+
   fPtNCrossedRowsNClusF = new TH2F("fPtNCrossedRowsNClusF","fPtNCrossedRowsNClusF",fgkNPtBins,binsPt,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
   fHistList->Add(fPtNCrossedRowsNClusF);
  
@@ -559,9 +572,21 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() {
   fPtNCrossedRowsFit = new TH2F("fPtNCrossedRowsFit","fPtNCrossedRowsFit",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC);
   fHistList->Add(fPtNCrossedRowsFit);
 
+  fPtNCrossedRowsFitPhi = new TH3F("fPtNCrossedRowsFitPhi","fPtNCrossedRowsFitPhi",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC,fgkNPhiBins,binsPhi);
+  fHistList->Add(fPtNCrossedRowsFitPhi);
+
   fPtNCrossedRowsNClusFFit = new TH2F("fPtNCrossedRowsNClusFFit","fPtNCrossedRowsNClusFFit",fgkNPtBins,binsPt,fgkNCrossedRowsNClusFBins,binsNCrossedRowsNClusF);
   fHistList->Add(fPtNCrossedRowsNClusFFit);
 
+  fNCrossedRowsNCrossedRowsFit = new TH2F("fNCrossedRowsNCrossedRowsFit","fNCrossedRowsNCrossedRowsFit",fgkNNClustersTPCBins,binsNClustersTPC,fgkNNClustersTPCBins,binsNClustersTPC);
+  fHistList->Add(fNCrossedRowsNCrossedRowsFit);
+
+  fNClustersNCrossedRows = new TH2F("fNClustersNCrossedRows","fNClustersNCrossedRows",fgkNNClustersTPCBins,binsNClustersTPC,fgkNNClustersTPCBins,binsNClustersTPC);
+  fHistList->Add(fNClustersNCrossedRows);
+
+  fNClustersNCrossedRowsFit = new TH2F("fNClustersNCrossedRowsFit","fNClustersNCrossedRowsFit",fgkNNClustersTPCBins,binsNClustersTPC,fgkNNClustersTPCBins,binsNClustersTPC);
+  fHistList->Add(fNClustersNCrossedRowsFit);
+
   fPtChi2Gold = new TH2F("fPtChi2Gold","fPtChi2Gold",fgkNPtBins,binsPt,fgkNChi2CBins,binsChi2C);
   fHistList->Add(fPtChi2Gold);
 
@@ -1091,8 +1116,9 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() {
   
     if(fVariables->At(5)>0.) fVariables->SetAt(track->GetTPCchi2()/fVariables->At(5),10);
     
-    //  fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
+    //fVariables->SetAt(track->GetTPCClusterInfo(2,1),11); //#crossed rows
     fVariables->SetAt(track->GetTPCCrossedRows(),11); //#crossed rows
+
     Float_t crossedRowsTPCNClsF = 1.;//track->GetTPCClusterInfo(2,0);
     if(track->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/track->GetTPCNclsF();
     fVariables->SetAt(crossedRowsTPCNClsF,12);//(#crossed rows)/(#findable clusters)
@@ -1250,6 +1276,7 @@ void AliPWG4HighPtTrackQA::FillHistograms() {
 
   fPtChi2PerClusterTPC->Fill(fVariables->At(0),fVariables->At(10));
   fPtNCrossedRows->Fill(fVariables->At(0),fVariables->At(11));
+  fPtNCrossedRowsPhi->Fill(fVariables->At(0),fVariables->At(11),fVariables->At(1));
   fPtNCrossedRowsNClusF->Fill(fVariables->At(0),fVariables->At(12));
   fPtNCrRNCrRNClusF->Fill(fVariables->At(0),fVariables->At(11),fVariables->At(12));
 
@@ -1262,8 +1289,12 @@ void AliPWG4HighPtTrackQA::FillHistograms() {
   fChi2GoldChi2GGC->Fill(fVariables->At(21),fVariables->At(22));
 
   fPtNCrossedRowsFit->Fill(fVariables->At(0),fVariables->At(23));
+  fPtNCrossedRowsFitPhi->Fill(fVariables->At(0),fVariables->At(23),fVariables->At(1));
   fPtNCrossedRowsNClusFFit->Fill(fVariables->At(0),fVariables->At(24));
+  fNCrossedRowsNCrossedRowsFit->Fill(fVariables->At(11),fVariables->At(23));
 
+  fNClustersNCrossedRows->Fill(fVariables->At(5),fVariables->At(11));
+  fNClustersNCrossedRowsFit->Fill(fVariables->At(5),fVariables->At(23));
 
 }
 
index 68edff0..f0ab8d0 100644 (file)
@@ -191,10 +191,15 @@ class AliPWG4HighPtTrackQA: public AliAnalysisTaskSE {
   TH2F *fPtChi2PerClusterTPC;                  //! Pt vs Chi2PerClusterTPC
   TH2F *fPtChi2PerClusterTPCIter1;             //! Pt vs Chi2PerClusterTPCIter1
   TH2F *fPtNCrossedRows;                       //! Pt vs NCrossedRows
+  TH3F *fPtNCrossedRowsPhi;                    //! Pt vs NCrossedRows vs Phi
   TH2F *fPtNCrossedRowsNClusF;                 //! Pt vs NCrossedRows/NClusF
   TH3F *fPtNCrRNCrRNClusF;                     //! Pt vs NCrossedRows vs NCrossedRows/NClusF 
   TH2F *fPtNCrossedRowsFit;                    //! Pt vs NCrossedRows from NClusterFitMap
+  TH3F *fPtNCrossedRowsFitPhi;                 //! Pt vs NCrossedRows from FitMap vs Phi
   TH2F *fPtNCrossedRowsNClusFFit;              //! Pt vs NCrossedRows/NClusF from NClusterFitMap
+  TH2F *fNCrossedRowsNCrossedRowsFit;          //! NCrossedRows from ClusterMap vs NCrossedRows from NClusterFitMap
+  TH2F *fNClustersNCrossedRows;                //! NClusters vs NCrossedRows
+  TH2F *fNClustersNCrossedRowsFit;             //! NClusters vs NCrossedRows from fit map
 
   TH2F *fPtChi2Gold;                           //! Pt vs Chi2 between global and TPC constrained track
   TH2F *fPtChi2GGC;                            //! Pt vs Chi2 between global and global constrained track