X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGJE%2FAliPWG4HighPtTrackQA.cxx;h=a077014cf9acd7b9fa6ba96c3abff5d94c68c564;hb=f3e78a99f9c85e6552d77d3f0a0560d9c734dbbe;hp=2b53312427f6d4170e9635cbc4b707889474d9d5;hpb=37486cebd88560b91a0c0f7703b911cd93e91510;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGJE/AliPWG4HighPtTrackQA.cxx b/PWGJE/AliPWG4HighPtTrackQA.cxx index 2b53312427f..a077014cf9a 100644 --- a/PWGJE/AliPWG4HighPtTrackQA.cxx +++ b/PWGJE/AliPWG4HighPtTrackQA.cxx @@ -63,6 +63,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA() fEvent(0x0), fESD(0x0), fVtx(0x0), + fVtxAOD(0x0), fTrackCuts(0x0), fTrackCutsITSLoose(0x0), fTrackCutsTPConly(0x0), @@ -96,6 +97,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA() fPtDCA2D(0x0), fPtDCAZ(0x0), fPtNClustersTPC(0x0), + fPtNClustersTPCPhi(0x0), fPtNClustersTPCIter1(0x0), fPtNClustersTPCIter1Phi(0x0), fPtNClustersTPCShared(0x0), @@ -150,7 +152,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA() // // Constructor // - SetNVariables(25); + SetNVariables(26); fPtBinEdges[0][0] = 10.; fPtBinEdges[0][1] = 1.; @@ -167,6 +169,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name): fEvent(0x0), fESD(0x0), fVtx(0x0), + fVtxAOD(0x0), fTrackCuts(0x0), fTrackCutsITSLoose(0x0), fTrackCutsTPConly(0x0), @@ -200,6 +203,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name): fPtDCA2D(0x0), fPtDCAZ(0x0), fPtNClustersTPC(0x0), + fPtNClustersTPCPhi(0x0), fPtNClustersTPCIter1(0x0), fPtNClustersTPCIter1Phi(0x0), fPtNClustersTPCShared(0x0), @@ -256,7 +260,7 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name): // AliDebug(2,Form("AliPWG4HighPtTrackQA Calling Constructor")); - SetNVariables(25); + SetNVariables(26); fPtBinEdges[0][0] = 10.; fPtBinEdges[0][1] = 1.; @@ -272,7 +276,8 @@ AliPWG4HighPtTrackQA::AliPWG4HighPtTrackQA(const char *name): } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::SetPtBinEdges(Int_t region, Double_t ptmax, Double_t ptBinWidth) { +void AliPWG4HighPtTrackQA::SetPtBinEdges(Int_t region, Double_t ptmax, Double_t ptBinWidth) +{ // // Set variable bin sizes for pT axis in histos // @@ -289,7 +294,8 @@ void AliPWG4HighPtTrackQA::SetPtBinEdges(Int_t region, Double_t ptmax, Double_t } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::UserCreateOutputObjects() { +void AliPWG4HighPtTrackQA::UserCreateOutputObjects() +{ //Create output objects AliDebug(2,Form(">> AliPWG4HighPtTrackQA::UserCreateOutputObjects \n")); @@ -551,6 +557,9 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() { fPtNClustersTPC = new TH2F("fPtNClustersTPC","fPtNClustersTPC",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC); fHistList->Add(fPtNClustersTPC); + fPtNClustersTPCPhi = new TH2F("fPtNClustersTPCPhi","fPtNClustersTPCPhi",fgkNPhiBins,binsPhi,fgkNNClustersTPCBins,binsNClustersTPC); + fHistList->Add(fPtNClustersTPCPhi); + fPtNClustersTPCIter1 = new TH2F("fPtNClustersTPCIter1","fPtNClustersTPCIter1",fgkNPtBins,binsPt,fgkNNClustersTPCBins,binsNClustersTPC); fHistList->Add(fPtNClustersTPCIter1); @@ -725,7 +734,8 @@ void AliPWG4HighPtTrackQA::UserCreateOutputObjects() { } //________________________________________________________________________ -Bool_t AliPWG4HighPtTrackQA::SelectEvent() { +Bool_t AliPWG4HighPtTrackQA::SelectEvent() +{ // // Decide if event should be selected for analysis // @@ -792,15 +802,15 @@ Bool_t AliPWG4HighPtTrackQA::SelectEvent() { } } else if(fDataType==kAOD&&dynamic_cast(fEvent)) { - const AliAODVertex *vtx = ((AliAODEvent*)fEvent)->GetPrimaryVertexSPD(); - if(!vtx) { + fVtxAOD = ((AliAODEvent*)fEvent)->GetPrimaryVertex(); + if(!fVtxAOD) { fNEventReject->Fill("noVTX",1); selectEvent = kFALSE; return selectEvent; } // Need vertex cut - if(vtx->GetNContributors()<2) { + if(fVtxAOD->GetNContributors()<2) { fNEventReject->Fill("NCont<2",1); selectEvent = kFALSE; return selectEvent; @@ -808,7 +818,7 @@ Bool_t AliPWG4HighPtTrackQA::SelectEvent() { //Check if z-vertex < 10 cm double primVtx[3]; - vtx->GetXYZ(primVtx); + fVtxAOD->GetXYZ(primVtx); if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){ fNEventReject->Fill("ZVTX>10",1); selectEvent = kFALSE; @@ -832,8 +842,8 @@ Bool_t AliPWG4HighPtTrackQA::SelectEvent() { } } else if(fDataType==kAOD) { - if(dynamic_cast(fEvent)->GetHeader()->GetCentrality()) - cent = dynamic_cast(fEvent)->GetHeader()->GetCentrality(); + if(((AliVAODHeader*)dynamic_cast(fEvent)->GetHeader())->GetCentrality()) + cent = ((AliVAODHeader*)dynamic_cast(fEvent)->GetHeader())->GetCentrality(); } if(cent>90.) { fNEventReject->Fill("cent>90",1); @@ -849,7 +859,8 @@ Bool_t AliPWG4HighPtTrackQA::SelectEvent() { } //________________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliVEvent *ev){ +Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliVEvent *ev) +{ // // Get centrality from ESD or AOD // @@ -863,7 +874,8 @@ Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliVEvent *ev){ } //________________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliESDEvent *esd){ +Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliESDEvent *esd) +{ // // Get centrality from ESD // @@ -882,13 +894,14 @@ Int_t AliPWG4HighPtTrackQA::CalculateCentrality(AliESDEvent *esd){ } //________________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::CalculateCentrality(const AliAODEvent *aod){ +Int_t AliPWG4HighPtTrackQA::CalculateCentrality(const AliAODEvent *aod) +{ // // Get centrality from AOD // if(!aod) return 5; - Float_t cent = aod->GetHeader()->GetCentrality(); + Float_t cent = ((AliVAODHeader*)aod->GetHeader())->GetCentrality(); if(fDebug>3) printf("centrality: %f\n",cent); return GetCentralityClass(cent); @@ -896,7 +909,8 @@ Int_t AliPWG4HighPtTrackQA::CalculateCentrality(const AliAODEvent *aod){ } //________________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::GetCentralityClass(Float_t cent) const { +Int_t AliPWG4HighPtTrackQA::GetCentralityClass(Float_t cent) const +{ // // Get centrality class // @@ -911,7 +925,8 @@ Int_t AliPWG4HighPtTrackQA::GetCentralityClass(Float_t cent) const { } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::UserExec(Option_t *) { +void AliPWG4HighPtTrackQA::UserExec(Option_t *) +{ // Main loop // Called for each event AliDebug(2,Form(">> AliPWG4HighPtTrackQA::UserExec \n")); @@ -946,7 +961,8 @@ void AliPWG4HighPtTrackQA::UserExec(Option_t *) { } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::DoAnalysisESD() { +void AliPWG4HighPtTrackQA::DoAnalysisESD() +{ // // Run analysis on ESD // @@ -1227,7 +1243,8 @@ void AliPWG4HighPtTrackQA::DoAnalysisESD() { } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::DoAnalysisAOD() { +void AliPWG4HighPtTrackQA::DoAnalysisAOD() +{ // // Do QA on AOD input // @@ -1236,14 +1253,8 @@ void AliPWG4HighPtTrackQA::DoAnalysisAOD() { AliExternalTrackParam exParam; for (Int_t iTrack = 0; iTrack < fEvent->GetNumberOfTracks(); iTrack++) { - AliAODTrack *aodtrack = aod->GetTrack(iTrack); - // if(aodtrack->GetFilterMap()>128 && aodtrack->GetFilterMap()<1333) - // Printf("filterMask = %d",aodtrack->GetFilterMap()); - // if(aodtrack->IsHybridGlobalConstrainedGlobal()) { - // Printf("hybrid filterMask = %d",aodtrack->GetFilterMap()); - // if(aodtrack->IsGlobalConstrained()) - // Printf("global constrained filterMask = %d",aodtrack->GetFilterMap()); - // } + AliAODTrack *aodtrack = dynamic_cast(aod->GetTrack(iTrack)); + if(!aodtrack) AliFatal("Not a standard AOD"); if( !aodtrack->TestFilterMask(fFilterMask) ) { fh1NTracksReject->Fill("noHybridTrack",1); continue; @@ -1262,19 +1273,28 @@ void AliPWG4HighPtTrackQA::DoAnalysisAOD() { fVariables->SetAt(aodtrack->Phi(),1); fVariables->SetAt(aodtrack->Eta(),2); - Double_t dca[2] = {1e6,1e6}; - Double_t covar[3] = {1e6,1e6,1e6}; - if(aodtrack->PropagateToDCA(fEvent->GetPrimaryVertex(),fEvent->GetMagneticField(),100.,dca,covar)) { - fVariables->SetAt(dca[0],3); - fVariables->SetAt(dca[1],4); + Double_t dca[2] = {0.,0.}; + if(aodtrack->IsGlobalConstrained()) { + dca[0] = aodtrack->DCA(); + dca[1] = aodtrack->ZAtDCA(); + } else { + Double_t v[3] = {0}; + Double_t pos[3] = {0}; + fVtxAOD->GetXYZ(v); + aodtrack->GetXYZ(pos); + dca[0] = pos[0] - v[0]; + dca[1] = pos[1] - v[1]; } - + fVariables->SetAt(dca[0],3); + fVariables->SetAt(dca[1],4); fVariables->SetAt((float)aodtrack->GetTPCNcls(),5); fVariables->SetAt((float)aodtrack->GetITSNcls(),6); - fVariables->SetAt(aodtrack->Chi2perNDF(),7); + fVariables->SetAt(0.,7); //ConstrainedChi2TPC -> not available in AOD fVariables->SetAt(0.,8); fVariables->SetAt(GetTrackLengthTPC(aodtrack),9); - fVariables->SetAt(aodtrack->Chi2perNDF(),10); + Float_t chi2pndf = aodtrack->Chi2perNDF(); + //if(fVariables->At(5)>0.) chi2pndf = aodtrack->GetTPCchi2()/fVariables->At(5); + fVariables->SetAt(chi2pndf,10); fVariables->SetAt(GetTPCClusterInfo(aodtrack,2,1,0,159,kFALSE),11); Float_t crossedRowsTPCNClsF = 0.; if(aodtrack->GetTPCNclsF()>0.) crossedRowsTPCNClsF = fVariables->At(11)/aodtrack->GetTPCNclsF(); @@ -1315,13 +1335,12 @@ void AliPWG4HighPtTrackQA::DoAnalysisAOD() { fPtAll->Fill(fVariables->At(0)); FillHistograms(); - } - } //________________________________________________________________________ -void AliPWG4HighPtTrackQA::FillHistograms() { +void AliPWG4HighPtTrackQA::FillHistograms() +{ // // Fill all QA histograms // @@ -1333,6 +1352,7 @@ void AliPWG4HighPtTrackQA::FillHistograms() { fPtDCA2D->Fill(fVariables->At(0),fVariables->At(3)); fPtDCAZ->Fill(fVariables->At(0),fVariables->At(4)); fPtNClustersTPC->Fill(fVariables->At(0),fVariables->At(5)); + fPtNClustersTPCPhi->Fill(fVariables->At(1),fVariables->At(5)); fPtNPointITS->Fill(fVariables->At(0),fVariables->At(6)); fPtNPointITSPhi->Fill(fVariables->At(0),fVariables->At(6),fVariables->At(1)); @@ -1404,7 +1424,8 @@ void AliPWG4HighPtTrackQA::FillHistograms() { } //________________________________________________________________________ -Bool_t AliPWG4HighPtTrackQA::PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials){ +Bool_t AliPWG4HighPtTrackQA::PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials) +{ // // get the cross section and the trails either from pyxsec.root or from pysec_hists.root // This is to called in Notify and should provide the path to the AOD/ESD file @@ -1467,6 +1488,7 @@ Bool_t AliPWG4HighPtTrackQA::PythiaInfoFromFile(const char* currFile,Float_t &fX } return kTRUE; } + //________________________________________________________________________ Bool_t AliPWG4HighPtTrackQA::Notify() { @@ -1501,7 +1523,8 @@ Bool_t AliPWG4HighPtTrackQA::Notify() } //________________________________________________________________________ -AliGenPythiaEventHeader* AliPWG4HighPtTrackQA::GetPythiaEventHeader(const AliMCEvent *mcEvent){ +AliGenPythiaEventHeader* AliPWG4HighPtTrackQA::GetPythiaEventHeader(const AliMCEvent *mcEvent) +{ if(!mcEvent)return 0; AliGenEventHeader* genHeader = mcEvent->GenEventHeader(); @@ -1650,7 +1673,8 @@ Float_t AliPWG4HighPtTrackQA::GetTPCClusterInfoFitMap(const AliESDtrack *tr,Int_ } //_______________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliESDtrack *track) const { +Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliESDtrack *track) const +{ // // returns distance between 1st and last hit in TPC // distance given in number of padrows @@ -1673,7 +1697,8 @@ Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliESDtrack *track) const { } //_______________________________________________________________________ -Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliAODTrack *track) const { +Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliAODTrack *track) const +{ // // returns distance between 1st and last hit in TPC // distance given in number of padrows @@ -1696,7 +1721,8 @@ Int_t AliPWG4HighPtTrackQA::GetTrackLengthTPC(const AliAODTrack *track) const { } //_______________________________________________________________________ -Float_t AliPWG4HighPtTrackQA::GetGoldenChi2(AliESDtrack *origtrack) { +Float_t AliPWG4HighPtTrackQA::GetGoldenChi2(AliESDtrack *origtrack) +{ // // Return chi2 between global and TPC constrained track // track should be the global unconstrained track @@ -1725,7 +1751,8 @@ Float_t AliPWG4HighPtTrackQA::GetGoldenChi2(AliESDtrack *origtrack) { } //_______________________________________________________________________ -Float_t AliPWG4HighPtTrackQA::GetGGCChi2(AliESDtrack *origtrack) { +Float_t AliPWG4HighPtTrackQA::GetGGCChi2(AliESDtrack *origtrack) +{ // // Return chi2 between global and global constrained track // track should be the global unconstrained track