]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisTaskPIDqa.cxx
added T0 histograms
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDqa.cxx
index e0f4962a6c72a6d59fb512ad99e5349b5b5c772d..33d60ca09eacd1992fb409515b18d268a2a923b3 100644 (file)
@@ -65,6 +65,7 @@ fListQAitsPureSA(0x0),
 fListQAtpc(0x0),\r
 fListQAtrd(0x0),\r
 fListQAtof(0x0),\r
+fListQAt0(0x0),\r
 fListQAemcal(0x0),\r
 fListQAhmpid(0x0),\r
 fListQAtofhmpid(0x0),\r
@@ -93,6 +94,7 @@ fListQAitsPureSA(0x0),
 fListQAtpc(0x0),\r
 fListQAtrd(0x0),\r
 fListQAtof(0x0),\r
+fListQAt0(0x0),\r
 fListQAemcal(0x0),\r
 fListQAhmpid(0x0),\r
 fListQAtofhmpid(0x0),\r
@@ -177,6 +179,10 @@ void AliAnalysisTaskPIDqa::UserCreateOutputObjects()
   fListQAtof=new TList;\r
   fListQAtof->SetOwner();\r
   fListQAtof->SetName("TOF");\r
+\r
+  fListQAt0=new TList;\r
+  fListQAt0->SetOwner();\r
+  fListQAt0->SetName("T0");\r
   \r
   fListQAemcal=new TList;\r
   fListQAemcal->SetOwner();\r
@@ -208,6 +214,7 @@ void AliAnalysisTaskPIDqa::UserCreateOutputObjects()
   fListQA->Add(fListQAtpc);\r
   fListQA->Add(fListQAtrd);\r
   fListQA->Add(fListQAtof);\r
+  fListQA->Add(fListQAt0);\r
   fListQA->Add(fListQAemcal);\r
   fListQA->Add(fListQAhmpid);\r
   fListQA->Add(fListQAtpctof);\r
@@ -219,6 +226,7 @@ void AliAnalysisTaskPIDqa::UserCreateOutputObjects()
   SetupTPCqa();\r
   SetupTRDqa();\r
   SetupTOFqa();\r
+  SetupT0qa();\r
   SetupEMCALqa();\r
   SetupHMPIDqa();\r
   SetupTPCTOFqa();\r
@@ -249,6 +257,7 @@ void AliAnalysisTaskPIDqa::UserExec(Option_t */*option*/)
   FillTOFqa();\r
   FillEMCALqa();\r
   FillHMPIDqa();\r
+  FillT0qa();\r
   \r
   //combined detector QA\r
   FillTPCTOFqa();\r
@@ -585,6 +594,11 @@ void AliAnalysisTaskPIDqa::FillTOFqa()
       } else {\r
        ((TH1F*)fListQAtof->FindObject("hNsigma_TOF_Pion_T0-Best"))->Fill(nsigma);\r
       }\r
+      if (mask & 0x1) { //at least TOF-T0 present\r
+       Double_t delta=0;\r
+       (void)fPIDResponse->GetSignalDelta((AliPIDResponse::EDetector)AliPIDResponse::kTOF,track,(AliPID::EParticleType)AliPID::kPion,delta);\r
+       ((TH1F*)fListQAtof->FindObject("hDelta_TOF_Pion"))->Fill(delta);\r
+      }\r
     }\r
 \r
     Double_t res = (Double_t)fPIDResponse->GetTOFResponse().GetStartTimeRes(mom);\r
@@ -606,6 +620,65 @@ void AliAnalysisTaskPIDqa::FillTOFqa()
   }\r
 }\r
 \r
+//______________________________________________________________________________\r
+void AliAnalysisTaskPIDqa::FillT0qa()\r
+{\r
+  //\r
+  // Fill TOF information\r
+  //\r
+  AliVEvent *event=InputEvent();\r
+\r
+  Int_t ntracks=event->GetNumberOfTracks();\r
+\r
+  Int_t tracksAtT0 = 0;\r
+\r
+  for(Int_t itrack = 0; itrack < ntracks; itrack++){\r
+    AliVTrack *track=(AliVTrack*)event->GetTrack(itrack);\r
+\r
+    //\r
+    //basic track cuts\r
+    //\r
+    ULong_t status=track->GetStatus();\r
+    // TPC refit + ITS refit +\r
+    if (!((status & AliVTrack::kTPCrefit) == AliVTrack::kTPCrefit) ||\r
+        !((status & AliVTrack::kITSrefit) == AliVTrack::kITSrefit) ) continue;\r
+    Float_t nCrossedRowsTPC = track->GetTPCClusterInfo(2,1);\r
+    Float_t  ratioCrossedRowsOverFindableClustersTPC = 1.0;\r
+    if (track->GetTPCNclsF()>0) {\r
+      ratioCrossedRowsOverFindableClustersTPC = nCrossedRowsTPC/track->GetTPCNclsF();\r
+    }\r
+    if ( nCrossedRowsTPC<70 || ratioCrossedRowsOverFindableClustersTPC<.8 ) continue;\r
+\r
+    tracksAtT0++;\r
+  }\r
+\r
+  Bool_t t0A = kFALSE;\r
+  Bool_t t0C = kFALSE;\r
+  Bool_t t0And = kFALSE;\r
+  Double_t startTimeT0 = event->GetT0TOF(0);     // AND\r
+  if (startTimeT0 < 90000) {\r
+    t0And = kTRUE;\r
+    ((TH1F*)fListQAt0->FindObject("hStartTimeAC_T0"))->Fill(startTimeT0);\r
+    }\r
+  startTimeT0 = event->GetT0TOF(1);             // T0A \r
+  if (startTimeT0 < 90000) {\r
+    t0A = kTRUE;\r
+    ((TH1F*)fListQAt0->FindObject("hStartTimeA_T0"))->Fill(startTimeT0);\r
+    \r
+  }\r
+  startTimeT0 = event->GetT0TOF(2);             // T0C \r
+  if (startTimeT0 < 90000) {\r
+    t0C = kTRUE;\r
+    ((TH1F*)fListQAt0->FindObject("hStartTimeC_T0"))->Fill(startTimeT0);\r
+  }\r
+  \r
+  ((TH1F* )fListQAt0->FindObject("hnTracksAt_T0"))->Fill(tracksAtT0);\r
+  if (t0A) ((TH1F*)fListQAt0->FindObject("hT0AEff"))->Fill(tracksAtT0);\r
+  if (t0C) ((TH1F*)fListQAt0->FindObject("hT0CEff"))->Fill(tracksAtT0);\r
+  if (t0And) ((TH1F*)fListQAt0->FindObject("hT0AndEff"))->Fill(tracksAtT0);\r
+  if (t0A || t0C) ((TH1F*)fListQAt0->FindObject("hT0OrEff"))->Fill(tracksAtT0);\r
+}\r
+\r
 \r
 //______________________________________________________________________________\r
 void AliAnalysisTaskPIDqa::FillEMCALqa()\r
@@ -1140,7 +1213,6 @@ void AliAnalysisTaskPIDqa::SetupTOFqa()
     fListQAtof->Add(hNsigmaP);\r
   }\r
 \r
-  // for Kaons PID we differentiate on Time Zero\r
   TH1F *hnSigT0Fill = new TH1F("hNsigma_TOF_Pion_T0-Fill","TOF n#sigma (Pion) T0-FILL [0.75-1.25. GeV/c]",200,-10,10);\r
   fListQAtof->Add(hnSigT0Fill);\r
   TH1F *hnSigT0T0 = new TH1F("hNsigma_TOF_Pion_T0-T0","TOF n#sigma (Pion) T0-T0 [0.75-1.25 GeV/c]",200,-10,10);\r
@@ -1149,7 +1221,9 @@ void AliAnalysisTaskPIDqa::SetupTOFqa()
   fListQAtof->Add(hnSigT0TOF);\r
   TH1F *hnSigT0Best = new TH1F("hNsigma_TOF_Pion_T0-Best","TOF n#sigma (Pion) T0-Best [0.75-1.25 GeV/c]",200,-10,10);\r
   fListQAtof->Add(hnSigT0Best);\r
-\r
+  TH1F *hnDeltaPi = new TH1F("hDelta_TOF_Pion","DeltaT (Pion) [0.75-1.25 GeV/c]",50,-500,500);\r
+  fListQAtof->Add(hnDeltaPi);\r
+  \r
   TH2F *hSig = new TH2F("hSigP_TOF",\r
                         "TOF signal vs. p;p [GeV]; TOF signal [ns]",\r
                         vX->GetNrows()-1,vX->GetMatrixArray(),\r
@@ -1164,9 +1238,9 @@ void AliAnalysisTaskPIDqa::SetupTOFqa()
   TH1F *hStartTimeResTOF = new TH1F("hStartTimeRes_TOF","StartTime resolution [ps]",100,0,500);\r
   fListQAtof->Add(hStartTimeResTOF);\r
 \r
-  TH1F *hnTracksAtTOF = new TH1F("hnTracksAt_TOF","Matched tracks at TOF",20,0,20);\r
+  TH1F *hnTracksAtTOF = new TH1F("hnTracksAt_TOF","Matched tracks at TOF",100,0,100);\r
   fListQAtof->Add(hnTracksAtTOF);\r
-  TH1F *hT0MakerEff = new TH1F("hT0MakerEff","Events with T0-TOF vs nTracks",20,0,20);\r
+  TH1F *hT0MakerEff = new TH1F("hT0MakerEff","Events with T0-TOF vs nTracks",100,0,100);\r
   fListQAtof->Add(hT0MakerEff);\r
 \r
   // this in principle should stay on a T0 PID QA, but are just the data prepared for TOF use\r
@@ -1178,6 +1252,36 @@ void AliAnalysisTaskPIDqa::SetupTOFqa()
   fListQAtof->Add(hStartTimeACT0);\r
 }\r
 \r
+\r
+//______________________________________________________________________________\r
+void AliAnalysisTaskPIDqa::SetupT0qa()\r
+{\r
+  //\r
+  // Create the T0 qa objects\r
+  //\r
+  \r
+  // these are similar to plots inside TOFqa, but these are for all events\r
+  TH1F *hStartTimeAT0 = new TH1F("hStartTimeA_T0","StartTime from T0A [ps]",1000,-1000,1000);\r
+  fListQAt0->Add(hStartTimeAT0);\r
+  TH1F *hStartTimeCT0 = new TH1F("hStartTimeC_T0","StartTime from T0C [ps]",1000,-1000,1000);\r
+  fListQAt0->Add(hStartTimeCT0);\r
+  TH1F *hStartTimeACT0 = new TH1F("hStartTimeAC_T0","StartTime from T0AC [ps]",1000,-1000,1000);;\r
+  fListQAt0->Add(hStartTimeACT0);\r
+\r
+  TH1F *hnTracksAtT0 = new TH1F("hnTracksAt_T0","Tracks for events selected for T0",100,0,100);\r
+  fListQAt0->Add(hnTracksAtT0);\r
+  TH1F *hT0AEff = new TH1F("hT0AEff","Events with T0A vs nTracks",100,0,100);\r
+  fListQAt0->Add(hT0AEff);\r
+  TH1F *hT0CEff = new TH1F("hT0CEff","Events with T0C vs nTracks",100,0,100);\r
+  fListQAt0->Add(hT0CEff);\r
+  TH1F *hT0AndEff = new TH1F("hT0AndEff","Events with T0AC (AND) vs nTracks",100,0,100);\r
+  fListQAt0->Add(hT0AndEff);\r
+  TH1F *hT0OrEff = new TH1F("hT0OrEff","Events with T0AC (OR) vs nTracks",100,0,100);\r
+  fListQAt0->Add(hT0OrEff);\r
+\r
+\r
+}\r
+\r
 //______________________________________________________________________________\r
 void AliAnalysisTaskPIDqa::SetupEMCALqa()\r
 {\r