]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliAnalysisTaskQASym.cxx
clang compatibility
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskQASym.cxx
index bc9f30bce72a8f69a3a8e35ebd4130ce0836704d..b0189d4370f63f37cc96fd7ccc92b44fdef775a4 100644 (file)
@@ -39,7 +39,7 @@ ClassImp(AliAnalysisTaskQASym)
     ,fTrackType(0)
     ,fStandAlone(0)
     ,fLow(0)
-    ,fHigh(1*10e7)
+    ,fHigh(100)
     ,fFieldOn(kTRUE)
     ,fHists(0)
     ,fHistRECpt(0)
@@ -52,6 +52,7 @@ ClassImp(AliAnalysisTaskQASym)
     ,fEtaPt(0)
     ,fQPt(0)
     ,fDca(0)
+    ,fDcaZ(0)
     ,fqRec(0)
     ,fSigmaPtHist(0)
     
@@ -106,9 +107,6 @@ ClassImp(AliAnalysisTaskQASym)
     ,fVx(0)
     ,fVy(0)
     ,fVz(0)
-    ,fVertexX(0)
-    ,fVertexY(0)
-    ,fVertexZ(0)
     ,fNVertexSPD(0)
     ,fNVertexTracks(0)
     ,fRecDcaPosPhi(0)
@@ -170,6 +168,12 @@ ClassImp(AliAnalysisTaskQASym)
 
 {
   // Constructor
+  for(Int_t i = 0;i<4;++i){
+    fVertexX[i]=0;
+    fVertexY[i]=0;
+    fVertexZ[i]=0;
+  }
+
   for(Int_t i = 0;i<18;++i){
     fRecPtTpcSector[i] = 0;
     fRecEtaTpcSector[i] = 0;
@@ -275,10 +279,10 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                       180, 0., 2*TMath::Pi());
   fNumber   = new TH1F("fNumber", 
                       "number of tracks per event",
-                      300, -0.5, 299.5);
+                      500, -5, 4995);
   fNumberAfterCut   = new TH1F("fNumberAfterCut", 
                               "number of tracks per event after cuts",
-                              300, -0.5, 299.5);
+                              500, -5, 4995);
   fVx   = new TH1F("fVx", 
                   "X of first track point",
                   100, -1., 1.);
@@ -288,15 +292,6 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fVz   = new TH1F("fVz", 
                   "Z of first track point",
                   200, -50., 50.);
-  fVertexX   = new TH1F("fVertexX", 
-                       "X of vertex",
-                       100, -1., 1.);
-  fVertexY   = new TH1F("fVertexY", 
-                       "Y of vertex",
-                       100, -1., 1.);
-  fVertexZ   = new TH1F("fVertexZ", 
-                       "Z of vertex",
-                       200, -50., 50.);
   fNVertexSPD   = new TH1F("fNVertexSPD", 
                        "Number of SPD vertices",
                        10, -0.5, 9.5);
@@ -316,6 +311,8 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                    " dca ",
                    200,  -range*(1+Int_t(fTrackType/2)*9), range*(1+Int_t(fTrackType/2)*9));
 
+  fDcaZ   = new TH1F("fDcaZ", "fDcaZ ",200,  -3, 3);// limits fitting those of track cuts
+
 
   fqRec    = new TH1F("fqRec",   
                      " charge all reconstructed particle",
@@ -326,7 +323,25 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
                         200, -4., 8.);
 
 
-
+  TString lable[4]={"", "SPD", "Track", "TPC"};
+  for(Int_t i=0;i<4;i++){
+    fVertexX[i]   = new TH1F(Form("fVertexX%s",lable[i].Data()),
+                            Form("fVertexX%s",lable[i].Data()),
+                            100, -1., 1.);
+    fVertexY[i]   = new TH1F(Form("fVertexY%s",lable[i].Data()),
+                            Form("fVertexY%s",lable[i].Data()),
+                            100, -1., 1.);
+    if(i==1 || i==2){
+      fVertexZ[i]   = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+                              Form("fVertexZ%s",lable[i].Data()),
+                              200, -5., 5.);
+    }
+    else{
+      fVertexZ[i]   = new TH1F(Form("fVertexZ%s",lable[i].Data()),
+                              Form("fVertexZ%s",lable[i].Data()),
+                              200, -50., 50.);
+    }
+  }
 
   //------------
   for(Int_t ITSlayer_case=0;ITSlayer_case<7;ITSlayer_case++){
@@ -918,15 +933,13 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fVx);
   fHists->Add(fVy);
   fHists->Add(fVz);
-  fHists->Add(fVertexX);
-  fHists->Add(fVertexY);
-  fHists->Add(fVertexZ);
   fHists->Add(fNVertexSPD);
   fHists->Add(fNVertexTracks);
 
   fHists->Add(fEtaPt);
   fHists->Add(fQPt);
   fHists->Add(fDca);
+  fHists->Add(fDcaZ);
 
   fHists->Add(fDeltaPhiAll);
   fHists->Add(fDeltaPhiLeading);
@@ -961,7 +974,11 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
   fHists->Add(fRecDPosEta);
   fHists->Add(fRecDNegEta);
 
-
+  for(Int_t i=0;i<4;i++){
+    fHists->Add(fVertexX[i]);
+    fHists->Add(fVertexY[i]);
+    fHists->Add(fVertexZ[i]);
+  }
   for(Int_t i=0;i<18;i++){
     fHists->Add(fRecPtTpcSector[i]);
     fHists->Add(fRecEtaTpcSector[i]);
@@ -1072,6 +1089,8 @@ void AliAnalysisTaskQASym::UserCreateOutputObjects()
 //   }
 
   TH1::AddDirectory(oldStatus);
+  PostData(1, fHists);
+
 }
 
 //__________________________________________________________
@@ -1089,7 +1108,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
 
   if(Entry()==0){
-    AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+    AliESDEvent* esd = static_cast<AliESDEvent*>(event);
     if(esd){
       Printf("We are reading from ESD");
     }
@@ -1107,36 +1126,73 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
 
   //check vertices
-  AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
+  AliESDEvent* esd = static_cast<AliESDEvent*>(event);
   Int_t nPileSPDVertices=1+esd->GetNumberOfPileupVerticesSPD(); // also SPD main vertex
   Int_t nPileTrkVertices=esd->GetNumberOfPileupVerticesTracks();
   fNVertexSPD->Fill(nPileSPDVertices);
   fNVertexTracks->Fill(nPileTrkVertices);
 
-  
   //check primary vertex
+  Float_t vx = 0;
+  Float_t vy = 0;
+  Float_t vz = 0;
+
+  //primary vertex: contribution from different vertexers
   const AliVVertex* vertex = event->GetPrimaryVertex();
-  if(vertex->GetNContributors()==0) return;
-  Float_t vx = vertex->GetX();
-  Float_t vy = vertex->GetY();
-  Float_t vz = vertex->GetZ();
+  if(!vertex) return;
+  vx = vertex->GetX();
+  vy = vertex->GetY();
+  vz = vertex->GetZ();
+  if(vertex->GetNContributors()>0){
+    fVertexX[0]->Fill(vx);
+    fVertexY[0]->Fill(vy);
+    fVertexZ[0]->Fill(vz);     
+  }
+  
+
   
-  fVertexX->Fill(vx);
-  fVertexY->Fill(vy);
-  fVertexZ->Fill(vz);
+  const AliVVertex* vertexSPD = esd->GetPrimaryVertexSPD();
+  if(vertexSPD){
+    if(vertexSPD->GetNContributors()>0){
+      fVertexX[1]->Fill(vertexSPD->GetX());
+      fVertexY[1]->Fill(vertexSPD->GetX());
+      fVertexZ[1]->Fill(vertexSPD->GetX());
+    }
+  }
+
+  const AliVVertex* vertexTrack = esd->GetPrimaryVertexTracks();
+  if(vertexTrack){
+    if(vertexTrack->GetNContributors()>0){
+      fVertexX[2]->Fill(vertexTrack->GetX());
+      fVertexY[2]->Fill(vertexTrack->GetX());
+      fVertexZ[2]->Fill(vertexTrack->GetX());
+    }
+  }
 
+  const AliVVertex* vertexTPC = esd->GetPrimaryVertexTPC();
+  if(vertexTPC){
+    if(vertexTPC->GetNContributors()>0){
+      fVertexX[3]->Fill(vertexTPC->GetX());
+      fVertexY[3]->Fill(vertexTPC->GetX());
+      fVertexZ[3]->Fill(vertexTPC->GetX());
+    }
+  }
+
+  //cuts on general vertex
+  if(vertex->GetNContributors()<1) return;
   if (TMath::Abs(vz) > 10.) return;
 
   fNumber->Fill(event->GetNumberOfTracks());
 
   AliESDtrack *tpcP = 0x0;
   Int_t fNTracksAccepted=0;
-  Float_t phiArray   [event->GetNumberOfTracks()];
-  Float_t etaArray   [event->GetNumberOfTracks()];
-  Float_t ptArray    [event->GetNumberOfTracks()];
-  Float_t dcaArray   [event->GetNumberOfTracks()];
-  Int_t chargeArray[event->GetNumberOfTracks()];
-  Bool_t acceptedArray[event->GetNumberOfTracks()];
+  const Int_t arrSize = event->GetNumberOfTracks();
+  Float_t * phiArray      = new Float_t[arrSize];
+  Float_t * etaArray      = new Float_t[arrSize];
+  Float_t * ptArray       = new Float_t[arrSize];
+  Float_t * dcaArray      = new Float_t[arrSize];
+  Int_t   * chargeArray   = new Int_t  [arrSize];
+  Bool_t  * acceptedArray = new Bool_t [arrSize];
 
   for (Int_t i = 0; i < event->GetNumberOfTracks(); i++) {
     phiArray[i]     = 0.;
@@ -1159,7 +1215,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     }
 
     AliVParticle *track = event->GetTrack(iTrack);
-    AliESDtrack *esdtrack =  dynamic_cast<AliESDtrack*>(track);
+    AliESDtrack *esdtrack =  static_cast<AliESDtrack*>(track);
     esdtrack->PropagateToDCA(event->GetPrimaryVertex(),
                             event->GetMagneticField(), 10000.);
 
@@ -1175,9 +1231,9 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     if(fTrackType==0){
       //Fill all histograms with global tracks
       tpcP = esdtrack;
-      phiIn = tpcP->Phi();
       if (!tpcP) continue;
       if (!fCuts->AcceptTrack(tpcP)) continue;
+      phiIn = tpcP->Phi();
     }
     else if(fTrackType==1){
       //Fill all histograms with ITS tracks
@@ -1188,6 +1244,9 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       if(fStandAlone==kTRUE) {
        if(!(tpcP->GetStatus()&AliESDtrack::kITSpureSA))continue;
       }
+      else if(fStandAlone==kFALSE){
+       if(tpcP->GetStatus()&AliESDtrack::kITSpureSA)continue;
+      }
     }
     else if(fTrackType==2){     
       //Fill all histograms with TPC track information
@@ -1195,7 +1254,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
       if (!tpcPin) continue;
       phiIn=tpcPin->Phi();
 
-      tpcP = AliESDtrackCuts::GetTPCOnlyTrack(dynamic_cast<AliESDEvent*>(event),esdtrack->GetID());
+      tpcP = AliESDtrackCuts::GetTPCOnlyTrack(static_cast<AliESDEvent*>(event),esdtrack->GetID());
       if (!tpcP) continue;
       if (!fCuts->AcceptTrack(tpcP)) continue;
       if(tpcP->GetNcls(1)>160)continue;//jacek's track cut
@@ -1210,7 +1269,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
   
 
     fNTracksAccepted++;
-    phiArray[iTrack]     = tpcP->Phi();
+    phiArray[iTrack]     = phiIn;
     etaArray[iTrack]     = tpcP->Eta();
     ptArray[iTrack]      = tpcP->Pt();
     chargeArray[iTrack]  = tpcP->Charge();
@@ -1286,7 +1345,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     fHistRECpt->Fill(tpcP->Pt());
     fEta->Fill(tpcP->Eta());
     fEtavPt->Fill(tpcP->Eta(), TMath::Log(tpcP->Pt()));
-    fPhivPt->Fill(tpcP->Phi(), TMath::Log(tpcP->Pt()));
+    fPhivPt->Fill(phiIn, TMath::Log(tpcP->Pt()));
     fEtaPhi->Fill(tpcP->Eta(), phiIn);
     fThetaRec->Fill(tpcP->Theta());
     fPhiRec->Fill(phiIn);
@@ -1306,7 +1365,8 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 
     tpcP->GetImpactParameters(fXY,fZ);
     fDiffDcaD->Fill(fSignedDca+fXY);
-
+    fDcaZ->Fill(fZ);
+    
     if(fTrackType==2) fCompareTPCparam->Fill(fZ,tpcPin->GetTgl());
 
     if(fTrackType!=2){//for global and ITS tracks
@@ -1469,7 +1529,7 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
 //       if(LeadingTrack==iTrack2) continue;
 
 //       AliVParticle *track2 = event->GetTrack(iTrack2);
-//       AliESDtrack* esdtrack2 =  dynamic_cast<AliESDtrack*>(track2);
+//       AliESDtrack* esdtrack2 =  static_cast<AliESDtrack*>(track2);
 //       if (!track2) {
 //     Printf("ERROR: Could not receive track %d", iTrack);
 //     continue;
@@ -1530,8 +1590,37 @@ void AliAnalysisTaskQASym::UserExec(Option_t *)
     delete tpcP;
     tpcP = 0;
   }
-  
 
+  if(phiArray){
+    delete[] phiArray; 
+    phiArray=0; 
+  }
+  
+  if(etaArray){
+    delete[] etaArray; 
+    etaArray=0; 
+  }
+  
+  if(dcaArray){
+    delete[] dcaArray; 
+    dcaArray=0; 
+  }
+  
+  if(ptArray){
+    delete[] ptArray; 
+    ptArray=0; 
+  }
+  
+  if(chargeArray){
+    delete[] chargeArray; 
+    chargeArray=0; 
+  }
+  
+  if(acceptedArray){
+    delete[] acceptedArray; 
+    acceptedArray=0; 
+  }
+  
   // Post output data.
   // PostData(1, fHistPt);
   PostData(1, fHists);