]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
One more plot.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2010 16:30:52 +0000 (16:30 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2010 16:30:52 +0000 (16:30 +0000)
Eva Sicking

PWG1/AliAnalysisTaskQASym.cxx
PWG1/AliAnalysisTaskQASym.h
PWG1/PilotTrain/AddTaskQAsym.C

index 7d642346dc801ad0e0359924078905f1e4c3effa..85474340f92c25c34d63b0a19ebb7b8b74bb4722 100644 (file)
@@ -133,6 +133,12 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaNegPhiEtaPos(0) 
     ,fRecDcaPosPhiEtaNeg(0)  
     ,fRecDcaNegPhiEtaNeg(0)  
+
+    ,fRecDcaPosPtEtaPos(0)
+    ,fRecDcaNegPtEtaPos(0) 
+    ,fRecDcaPosPtEtaNeg(0)  
+    ,fRecDcaNegPtEtaNeg(0)  
+  
     ,fRecPtPosPhiEtaPos(0)  
     ,fRecPtNegPhiEtaPos(0)  
     ,fRecPtPosPhiEtaNeg(0) 
@@ -144,7 +150,7 @@ ClassImp(AliAnalysisTaskQASym)
     ,fRecDcaPhiPtPosEtaNeg(0)  
     ,fRecDcaPhiPtNegEtaNeg(0)  
     ,fEtavPt(0)  
-
+    ,fCompareTPCparam(0)
 
     
     ,sdca(0)
@@ -210,10 +216,14 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fEta   = new TH1F("fEta", 
                    " #eta",
                    200, -2., 2.);
- fEtavPt   = new TH2F("fEtavPt", 
-                   " #eta -p_{T}",
-                    200, -2., 2.,
-                    100, 0, 1.5);
+  fEtavPt   = new TH2F("fEtavPt", 
+                      " #eta -p_{T}",
+                      200, -2., 2.,
+                      100, 0, 1.5);
+  fCompareTPCparam   = new TH2F("fCompareTPCparam", 
+                               "fCompareTPCparam",
+                               100, -1., 1.,100,-5, 5);
+  
   fEtaPhi   = new TH2F("fEtaPhi", 
                       " #eta - #phi",
                       200, -2., 2., 128, 0., 2. * TMath::Pi());
@@ -547,10 +557,34 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                             100,-2.5 , 2., 180, 0, TMath::Pi()*2);
   fRecPtNegPhiEtaNeg->GetXaxis()->SetTitle("log_{10}(p_{T})");
   fRecPtNegPhiEtaNeg->GetYaxis()->SetTitle("#phi (rad.)");
+  
+  //new
+  fRecDcaPosPtEtaPos   = new TH2F("fRecDcaPosPtEtaPos", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaPosPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaPosPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaPosPtEtaNeg   = new TH2F("fRecDcaPosPtEtaNeg", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaPosPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaPosPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaNegPtEtaPos   = new TH2F("fRecDcaNegPtEtaPos", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaNegPtEtaPos->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaNegPtEtaPos->GetYaxis()->SetTitle("log_{10}(p_{T})");
+
+  fRecDcaNegPtEtaNeg   = new TH2F("fRecDcaNegPtEtaNeg", 
+                            " dca vs. pt",
+                            100, -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9), 200, -2, 2);
+  fRecDcaNegPtEtaNeg->GetXaxis()->SetTitle("dca (cm)");
+  fRecDcaNegPtEtaNeg->GetYaxis()->SetTitle("log_{10}(p_{T})");
+    
 
 
-
-    
   //  YIELDs ---------------- for TPC sectors
   for(Int_t sector=0; sector<18;sector++){
       
@@ -790,6 +824,7 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fHistRECpt);
   fHists->Add(fEta);
   fHists->Add(fEtavPt);
+  fHists->Add(fCompareTPCparam);
   fHists->Add(fEtaPhi);
   fHists->Add(fThetaRec);
   fHists->Add(fPhiRec);
@@ -917,6 +952,11 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fRecPtPosPhiEtaNeg);
   fHists->Add(fRecPtNegPhiEtaNeg); 
 
+  fHists->Add(fRecDcaPosPtEtaPos);
+  fHists->Add(fRecDcaNegPtEtaPos);
+  fHists->Add(fRecDcaPosPtEtaNeg);
+  fHists->Add(fRecDcaNegPtEtaNeg);
+
   fHists->Add(fRecDcaPhiPtPosEtaPos); 
   fHists->Add(fRecDcaPhiPtPosEtaNeg); 
   fHists->Add(fRecDcaPhiPtNegEtaPos); 
@@ -1030,7 +1070,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       leadingPhi=phiIn;
     }
    
-
+    
     fqRec->Fill(tpcP->Charge());
   
 
@@ -1107,7 +1147,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     tpcP->GetImpactParameters(xy,z);
     fDiffDcaD->Fill(sdca+xy);
 
-   
+    if(fTrackType==2) fCompareTPCparam->Fill(z,tpcPin->GetTgl());
     
     //for positive particles
 
@@ -1146,6 +1186,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
        fRec1PtPosEtaPos->Fill(1/tpcP->Pt());
        fRecPhiPosEtaPos->Fill(phiIn);
        fRecDcaPosPhiEtaPos->Fill(sdca, phiIn);
+       fRecDcaPosPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
        fRecPtPosPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
        fRecDcaPhiPtPosEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
       }
@@ -1155,6 +1196,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
        fRec1PtPosEtaNeg->Fill(1/tpcP->Pt());
        fRecPhiPosEtaNeg->Fill(phiIn);
        fRecDcaPosPhiEtaNeg->Fill(sdca, phiIn);
+       fRecDcaPosPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
        fRecPtPosPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
        fRecDcaPhiPtPosEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
       }
@@ -1198,6 +1240,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
        fRec1PtNegEtaPos->Fill(1/tpcP->Pt());
        fRecPhiNegEtaPos->Fill(phiIn);
        fRecDcaNegPhiEtaPos->Fill(sdca, phiIn);
+       fRecDcaNegPtEtaPos->Fill(sdca, TMath::Log10(tpcP->Pt()));
        fRecPtNegPhiEtaPos->Fill(TMath::Log10(tpcP->Pt()), phiIn);
        fRecDcaPhiPtNegEtaPos->Fill(phiIn, tpcP->Pt(), sdca);
       }
@@ -1207,6 +1250,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
        fRec1PtNegEtaNeg->Fill(1/tpcP->Pt());
        fRecPhiNegEtaNeg->Fill(phiIn);
        fRecDcaNegPhiEtaNeg->Fill(sdca, phiIn);
+       fRecDcaNegPtEtaNeg->Fill(sdca, TMath::Log10(tpcP->Pt()));
        fRecPtNegPhiEtaNeg->Fill(TMath::Log10(tpcP->Pt()), phiIn);
        fRecDcaPhiPtNegEtaNeg->Fill(phiIn, tpcP->Pt(), sdca);
       }
@@ -1271,6 +1315,9 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
      
 
 //     }//second track loop
+
+    if(fTrackType==2) delete tpcP; // delete in case of TPCOnlyTrack
+
   }//first track loop
 
   
index d20b5b0f14f8f934c4478e9a61e420870a017b53..c80a2d03ca2407bea1c9f7b0bcb3e80734882e2f 100644 (file)
@@ -138,18 +138,23 @@ class AliAnalysisTaskQASym : public AliAnalysisTaskSE {
   TH2F        *fRecDcaPosPhiEtaNeg;  //dca-phi for pos tracks and neg eta
   TH2F        *fRecDcaNegPhiEtaNeg;  //dca-phi for neg tracks and neg eta
 
+  TH2F        *fRecDcaPosPtEtaPos;  //dca-pt for pos tracks and pos eta
+  TH2F        *fRecDcaNegPtEtaPos;  //dca-pt for neg tracks and pos eta
+  TH2F        *fRecDcaPosPtEtaNeg;  //dca-pt for pos tracks and neg eta
+  TH2F        *fRecDcaNegPtEtaNeg;  //dca-pt for neg tracks and neg eta
+
   TH2F        *fRecPtPosPhiEtaPos;  //pt-phi for pos tracks and pos eta
   TH2F        *fRecPtNegPhiEtaPos;  //pt-phi for neg tracks and pos eta 
   TH2F        *fRecPtPosPhiEtaNeg;  //pt-phi for pos tracks and neg eta
   TH2F        *fRecPtNegPhiEtaNeg;  //pt-phi for neg tracks and neg eta
 
-
   TH3F        *fRecDcaPhiPtPosEtaPos; //dca-pt-phi for pos tracks and pos eta
   TH3F        *fRecDcaPhiPtNegEtaPos; //dca-pt-phi for neg tracks and pos eta
   TH3F        *fRecDcaPhiPtPosEtaNeg; //dca-pt-phi for pos tracks and neg eta
   TH3F        *fRecDcaPhiPtNegEtaNeg; //dca-pt-phi for neg tracks and neg eta
 
   TH2F        *fEtavPt;
+  TH2F        *fCompareTPCparam;
 
   Double_t  sdca;
   Float_t xy, z, xvertexcor, yvertexcor;
index 07c53aeef305f1c7080736e993da88a65136752c..43996b4b50a122467e9755a9ad4b4ccf8a61abdc 100644 (file)
-AliAnalysisTaskSE* AddTaskQAsym()\r
-{\r
-  // Creates a QA task exploiting simple symmetries phi, eta +/-, charge ...\r
-  \r
-  // Get the pointer to the existing analysis manager via the static access method.\r
-  //==============================================================================\r
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
-  if (!mgr) {\r
-    ::Error("AddTaskQAsym", "No analysis manager to connect to.");\r
-    return NULL;\r
-  }  \r
-  \r
-  // Check the analysis type using the event handlers connected to the analysis manager.\r
-  //==============================================================================\r
-  if (!mgr->GetInputEventHandler()) {\r
-    ::Error("AddTasQAsym", "This task requires an input event handler");\r
-    return NULL;\r
-  }\r
-   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"\r
-  \r
-   // Configure analysis\r
-   //===========================================================================\r
-   \r
\r
\r
-   AliAnalysisTaskQASym *task = new AliAnalysisTaskQASym("AliAnalysisTaskQASym");\r
-   AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts","Standard");\r
-   esdTrackCutsL->SetMinNClustersTPC(50);\r
-   esdTrackCutsL->SetRequireTPCRefit(kTRUE);\r
-   esdTrackCutsL->SetMaxDCAToVertexXY(3.);\r
-   esdTrackCutsL->SetMaxDCAToVertexZ(3.);\r
-   esdTrackCutsL->SetAcceptKinkDaughters(kFALSE);\r
-   \r
-   task->SetCuts(esdTrackCutsL);\r
-\r
-   mgr->AddTask(task);\r
-  \r
-   AliAnalysisDataContainer *cout  = mgr->CreateContainer("QAsymHists",TList::Class(),\r
-                                                       AliAnalysisManager::kOutputContainer,"QAsym.root");\r
-\r
-   mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());\r
-   mgr->ConnectOutput (task, 1, cout);\r
-  \r
-   return task;\r
-}\r
-\r
-\r
+AliAnalysisTaskQASym * AddTaskQAsym(Int_t runNumber)
+
+{
+  // Creates a QA task exploiting simple symmetries phi, eta +/-, charge ...
+  
+  // Get the pointer to the existing analysis manager via the static access method.
+  //==============================================================================
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if (!mgr) {
+    ::Error("AddTaskQAsym", "No analysis manager to connect to.");
+    return NULL;
+  }  
+  
+  // Check the analysis type using the event handlers connected to the analysis manager.
+  //==============================================================================
+  if (!mgr->GetInputEventHandler()) {
+    ::Error("AddTasQAsym", "This task requires an input event handler");
+    return NULL;
+  }
+   TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+  
+   // Configure analysis
+   //===========================================================================
+   
+   //Task for global tracks
+   AliAnalysisTaskQASym *task0 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_Global");
+   task0->SetTrackType(0);
+   task0->SelectCollisionCandidates();
+   //Task for ITS tracks 
+   AliAnalysisTaskQASym *task1 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_ITS");
+   task1->SetTrackType(1);
+   task1->SelectCollisionCandidates();
+   //Task for TPC tracks 
+   AliAnalysisTaskQASym *task2 = new AliAnalysisTaskQASym("AliAnalysisTaskQASym_TPC");
+   task2->SetTrackType(2);
+   task2->SelectCollisionCandidates();
+
+   //cuts for global tracks
+   AliESDtrackCuts* esdTrackCutsL0 = new AliESDtrackCuts("AliESDtrackCuts0","Global");
+   esdTrackCutsL0->SetMinNClustersTPC(70);
+   esdTrackCutsL0->SetRequireTPCRefit(kTRUE);
+   esdTrackCutsL0->SetMaxDCAToVertexXY(3.);
+   esdTrackCutsL0->SetMaxDCAToVertexZ(3.);
+   esdTrackCutsL0->SetAcceptKinkDaughters(kFALSE);
+
+   AliESDtrackCuts* esdTrackCutsL1 = new AliESDtrackCuts("AliESDtrackCuts1","ITS");
+   esdTrackCutsL1->SetMaxDCAToVertexXY(3.);
+   esdTrackCutsL1->SetMaxDCAToVertexZ(3.);
+   esdTrackCutsL1->SetAcceptKinkDaughters(kFALSE);
+   esdTrackCutsL1->SetRequireITSRefit(kTRUE);
+   esdTrackCutsL1->SetRequireITSStandAlone(kTRUE);
+   
+   //cuts for TPC tracks
+   AliESDtrackCuts* esdTrackCutsL2 = new AliESDtrackCuts("AliESDtrackCuts2","TPC");
+   esdTrackCutsL2->SetRequireTPCRefit(kFALSE);
+   esdTrackCutsL2->SetAcceptKinkDaughters(kFALSE);
+   //jacek's cuts:
+   esdTrackCutsL2->SetMinNClustersTPC(70);
+   // cut on max ncl=160 in Task
+   esdTrackCutsL2->SetMaxDCAToVertexXY(3.);
+   esdTrackCutsL2->SetMaxDCAToVertexZ(3.);
+   esdTrackCutsL2->SetMaxChi2PerClusterTPC(3.999);
+   //cut minChi=0 in task
+   //esdTrackCutsL2->SetPRange(0.15,16); // not needed for QA
+   //esdTrackCutsL2->SetEtaRange(-0.8, 0.7999); // not needed for QA
+  
+
+   task0->SetCuts(esdTrackCutsL0);
+   task1->SetCuts(esdTrackCutsL1);
+   task2->SetCuts(esdTrackCutsL2);
+
+   mgr->AddTask(task0);
+   mgr->AddTask(task1);
+   mgr->AddTask(task2);
+  
+   AliAnalysisDataContainer *cout0  = 0;
+   AliAnalysisDataContainer *cout1  = 0;
+   AliAnalysisDataContainer *cout2  = 0;
+   
+   if(runNumber>0){ 
+    cout0 =  mgr->CreateContainer("QAsymHists_Global",TList::Class(),
+                                 AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+    cout1 =  mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
+                                 AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+    cout2 =  mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
+                                 AliAnalysisManager::kOutputContainer, Form("run%d.root",runNumber));
+   }
+   
+   else{
+      cout0 = mgr->CreateContainer("QAsymHists_Global",TList::Class(),
+                                AliAnalysisManager::kOutputContainer, 
+                                Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+      cout1 = mgr->CreateContainer("QAsymHists_ITS",TList::Class(),
+                                  AliAnalysisManager::kOutputContainer, 
+                                Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+      cout2 = mgr->CreateContainer("QAsymHists_TPC",TList::Class(),
+                                  AliAnalysisManager::kOutputContainer, 
+                                Form("%s:PWG1_QAsymHists",AliAnalysisManager::GetCommonFileName()));
+   }
+
+
+   mgr->ConnectInput  (task0, 0, mgr->GetCommonInputContainer());
+   mgr->ConnectInput  (task1, 0, mgr->GetCommonInputContainer());
+   mgr->ConnectInput  (task2, 0, mgr->GetCommonInputContainer());
+
+   mgr->ConnectOutput (task0, 0, mgr->GetCommonOutputContainer());
+   mgr->ConnectOutput (task1, 0, mgr->GetCommonOutputContainer());
+   mgr->ConnectOutput (task2, 0, mgr->GetCommonOutputContainer());
+
+   mgr->ConnectOutput (task0, 1, cout0);
+   mgr->ConnectOutput (task1, 1, cout1);
+   mgr->ConnectOutput (task2, 1, cout2);
+  
+   return task0;
+
+}
+
+