X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGJE%2FAliAnalysisTaskJetServices.cxx;h=868f8c984585ef57b581dd605b5ac0771548bb22;hb=670ffa5cff246d0bd231a8b969e3716b48529935;hp=737e2474cb2f4ad272bb1088ae82c62c70c8f5ad;hpb=692c4f057454667e31c885e798857553d67e5d04;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGJE/AliAnalysisTaskJetServices.cxx b/PWGJE/AliAnalysisTaskJetServices.cxx index 737e2474cb2..868f8c98458 100644 --- a/PWGJE/AliAnalysisTaskJetServices.cxx +++ b/PWGJE/AliAnalysisTaskJetServices.cxx @@ -86,12 +86,14 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(): fFilterMask(0), fRPMethod(0), fCollisionType(kPbPb), + fNTrigger(0), fAvgTrials(1), fVtxXMean(0), fVtxYMean(0), fVtxZMean(0), fVtxRCut(1.), fVtxZCut(8.), + fVtxDeltaZCut(0.1), fPtMinCosmic(5.), fRIsolMinCosmic(3.), fMaxCosmicAngle(0.01), @@ -101,10 +103,13 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(): fRPAngle(0), fPsiVZEROA(0), fPsiVZEROC(0), + fTriggerBit(0x0), fRandomizer(0), fNonStdFile(""), + fTriggerName(0x0), fh1Xsec(0x0), fh1Trials(0x0), + fh1AvgTrials(0x0), fh1PtHard(0x0), fh1PtHardTrials(0x0), fh1SelectionInfoESD(0x0), @@ -112,6 +117,9 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(): fh1CentralityESD(0), fh1Centrality(0), fh1RP(0), + fh2ReducedTrigger(0), + fh2CentralityTriggerESD(0), + fh2CentralityTrigger(0), fh2TriggerCount(0x0), fh2ESDTriggerCount(0x0), fh2TriggerVtx(0x0), @@ -153,12 +161,14 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name): fFilterMask(0), fRPMethod(0), fCollisionType(kPbPb), + fNTrigger(0), fAvgTrials(1), fVtxXMean(0), fVtxYMean(0), fVtxZMean(0), fVtxRCut(1.), fVtxZCut(8.), + fVtxDeltaZCut(0.1), fPtMinCosmic(5.), fRIsolMinCosmic(3.), fMaxCosmicAngle(0.01), @@ -168,10 +178,13 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name): fRPAngle(0), fPsiVZEROA(0), fPsiVZEROC(0), + fTriggerBit(0x0), fRandomizer(0), fNonStdFile(""), + fTriggerName(0x0), fh1Xsec(0x0), fh1Trials(0x0), + fh1AvgTrials(0x0), fh1PtHard(0x0), fh1PtHardTrials(0x0), fh1SelectionInfoESD(0x0), @@ -179,6 +192,9 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name): fh1CentralityESD(0), fh1Centrality(0), fh1RP(0), + fh2ReducedTrigger(0), + fh2CentralityTriggerESD(0), + fh2CentralityTrigger(0), fh2TriggerCount(0x0), fh2ESDTriggerCount(0x0), fh2TriggerVtx(0x0), @@ -238,6 +254,7 @@ Bool_t AliAnalysisTaskJetServices::Notify() // construct a poor man average trials Float_t nEntries = (Float_t)tree->GetTree()->GetEntries(); if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries; + fh1Trials->Fill("#sum{avg ntrials}",ftrials); } return kTRUE; } @@ -267,14 +284,18 @@ void AliAnalysisTaskJetServices::UserCreateOutputObjects() fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}"); fHistList->Add(fh1Trials); - const Int_t nBinPt = 100; + fh1AvgTrials = new TH1F("fh1AvgTrials","avg trials root file",1,0,1); + fh1AvgTrials->GetXaxis()->SetBinLabel(1,"#sum{avg ntrials}"); + fHistList->Add(fh1AvgTrials); + + const Int_t nBinPt = 125; Double_t binLimitsPt[nBinPt+1]; for(Int_t iPt = 0;iPt <= nBinPt;iPt++){ if(iPt == 0){ binLimitsPt[iPt] = 0.0; } else {// 1.0 - binLimitsPt[iPt] = binLimitsPt[iPt-1] + 2.5; + binLimitsPt[iPt] = binLimitsPt[iPt-1] + 2.; } } @@ -288,6 +309,21 @@ void AliAnalysisTaskJetServices::UserCreateOutputObjects() fh1RP = new TH1F("fh1RP","RP;#Psi",440, -1.*TMath::Pi(), 2.*TMath::Pi()); fHistList->Add(fh1RP); + fh2ReducedTrigger = new TH2F("fh2ReducedTrigger","red trigger;red trigger;centrality",1<Add(fh2ReducedTrigger); + + fh2CentralityTriggerESD = new TH2F("fh2CentralityTriggerESD",";cent;trigger no",103,-1,102,fNTrigger,-0.5,fNTrigger-0.5); + fHistList->Add(fh2CentralityTriggerESD); + + fh2CentralityTrigger = new TH2F("fh2CentralityTrigger",";cent;trigger no",103,-1,102,fNTrigger,-0.5,fNTrigger-0.5); + fHistList->Add(fh2CentralityTrigger); + + for(int i = 0;iGetYaxis()->SetBinLabel(i+1,fTriggerName[i].Data()); + fh2CentralityTrigger->GetYaxis()->SetBinLabel(i+1,fTriggerName[i].Data()); + } + + fh2TriggerCount = new TH2F("fh2TriggerCount",";Trigger No.;constrained;Count",6,-0.5,5.5,kConstraints,-0.5,kConstraints-0.5); fHistList->Add(fh2TriggerCount); @@ -456,25 +492,6 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) Bool_t aodVtxValid = false; Bool_t aodVtxIn = false; - if(esd){ - // trigger analyisis - if(!fTriggerAnalysis){ - fTriggerAnalysis = new AliTriggerAnalysis; - fTriggerAnalysis->SetAnalyzeMC(fMC); - fTriggerAnalysis->SetSPDGFOThreshhold(1); - } - // fTriggerAnalysis->FillTriggerClasses(esd); - Bool_t v0A = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0A); - Bool_t v0C = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0C); - Bool_t v0ABG = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0ABG); - Bool_t v0CBG = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0CBG); - Bool_t spdFO = fTriggerAnalysis->SPDFiredChips(esd, 0);; - if(v0A)fSelectionInfoESD |= AliAnalysisHelperJetTasks::kV0A; - if(v0C)fSelectionInfoESD |= AliAnalysisHelperJetTasks::kV0C; - if(!(v0ABG||v0CBG))fSelectionInfoESD |= AliAnalysisHelperJetTasks::kNoV0BG; - if(spdFO)fSelectionInfoESD |= AliAnalysisHelperJetTasks::kSPDFO; - } - // Apply additional constraints Bool_t esdEventSelected = IsEventSelected(esd); Bool_t esdEventPileUp = IsEventPileUp(esd); @@ -486,7 +503,7 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) fEventCutInfoESD |= kPhysicsSelectionCut; // other alreay set via IsEventSelected - fh1EventCutInfoESD->Fill(fEventCutInfoESD); + fh1EventCutInfoESD->Fill (fEventCutInfoESD); if(esdEventSelected) fSelectionInfoESD |= AliAnalysisHelperJetTasks::kVertexIn; if(esdEventPileUp) fSelectionInfoESD |= AliAnalysisHelperJetTasks::kIsPileUp; @@ -494,6 +511,8 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) if(physicsSelection) fSelectionInfoESD |= AliAnalysisHelperJetTasks::kPhysicsSelection; + + // here we have all selection information, fill histogram for(unsigned int i = 1;i<(UInt_t)fh1SelectionInfoESD->GetNbinsX();i++){ if((i&fSelectionInfoESD)==i)fh1SelectionInfoESD->Fill(i); @@ -528,8 +547,9 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) if(esd){ const AliESDVertex *vtxESD = esd->GetPrimaryVertex(); + const AliESDVertex *vtxESDSPD = esd->GetPrimaryVertexSPD(); esdVtxValid = IsVertexValid(vtxESD); - esdVtxIn = IsVertexIn(vtxESD); + esdVtxIn = IsVertexIn(vtxESD,vtxESDSPD); if(aodH&&physicsSelection&&fFilterAODCollisions&&aod){ if(fDebug)Printf("%s:%d Centrality %3.3f vtxin %d",(char*)__FILE__,__LINE__,cent,esdVtxIn); if(cent<=80&&esdVtxIn){ @@ -582,6 +602,14 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) tmpCent = esd->GetCentrality()->GetCentralityPercentile("V0M"); if(tmpCent<0)tmpCent = 101; fh1CentralityESD->Fill(tmpCent); + UInt_t ir = 0; + for(int it = 0;itIsEventSelected()&fTriggerBit[it]){ + fh2CentralityTriggerESD->Fill(tmpCent,it); + ir |= (1<Fill(ir,cent); } } } @@ -590,8 +618,9 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) if(aod){ const AliAODVertex *vtxAOD = aod->GetPrimaryVertex(); + const AliAODVertex *vtxAODSPD = aod->GetPrimaryVertexSPD(); aodVtxValid = IsVertexValid(vtxAOD); - aodVtxIn = IsVertexIn(vtxAOD); + aodVtxIn = IsVertexIn(vtxAOD,vtxAODSPD); Float_t zvtx = vtxAOD->GetZ(); Int_t iCl = GetEventClass(aod); AliAnalysisHelperJetTasks::EventClass(kTRUE,iCl); @@ -628,6 +657,9 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) fh2TriggerCount->Fill(iCl,kSelected); fh2TriggerCount->Fill(0.,kSelected); fh1Centrality->Fill(cent); + for(int it = 0;itIsEventSelected()&fTriggerBit[it])fh2CentralityTrigger->Fill(cent,it); + } AliAnalysisHelperJetTasks::Selected(kTRUE,kTRUE);// select this event if(aodH&&cand&&fFilterAODCollisions&&!esd){ if(fCentrality<=80&&aodVtxIn){ @@ -666,7 +698,7 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) Double_t ptHard = 0; Double_t nTrials = 1; // Trials for MC trigger - fh1Trials->Fill("#sum{ntrials}",fAvgTrials); + fh1AvgTrials->Fill("#sum{avg ntrials}",fAvgTrials); AliMCEvent* mcEvent = MCEvent(); // AliStack *pStack = 0; if(mcEvent){ @@ -751,7 +783,8 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/) Bool_t AliAnalysisTaskJetServices::IsEventSelected(const AliESDEvent* esd){ if(!esd)return kFALSE; const AliESDVertex *vtx = esd->GetPrimaryVertex(); - return IsVertexIn(vtx); // vertex in calls vertex valid + const AliESDVertex *vtxSPD = esd->GetPrimaryVertex(); + return IsVertexIn(vtx,vtxSPD); // vertex in calls vertex valid } AliAnalysisTaskJetServices::~AliAnalysisTaskJetServices(){ @@ -766,6 +799,8 @@ AliAnalysisTaskJetServices::~AliAnalysisTaskJetServices(){ delete fp1CalibRPYA; delete fp1CalibRPXC; delete fp1CalibRPYC; + delete [] fTriggerBit; + delete [] fTriggerName; } @@ -805,7 +840,8 @@ void AliAnalysisTaskJetServices::SetV0Centroids(TProfile *xa,TProfile *ya,TProfi Bool_t AliAnalysisTaskJetServices::IsEventSelected(const AliAODEvent* aod) const { if(!aod)return kFALSE; const AliAODVertex *vtx = aod->GetPrimaryVertex(); - return IsVertexIn(vtx); // VertexIn calls VertexValid + const AliAODVertex *vtxSPD = aod->GetPrimaryVertexSPD(); + return IsVertexIn(vtx,vtxSPD); // VertexIn calls VertexValid } Bool_t AliAnalysisTaskJetServices::IsVertexValid ( const AliESDVertex* vtx) { @@ -871,18 +907,19 @@ Bool_t AliAnalysisTaskJetServices::IsVertexValid ( const AliAODVertex* vtx) con return kFALSE; } - + TString vtxName(vtx->GetName()); if(fDebug){ Printf(" n contrib %d",vtx->GetNContributors()); + Printf("vtxName: %s",vtxName.Data()); vtx->Print(); } // if(vtx->GetNContributors()<3)return kFALSE; // do not want tpc only primary vertex - TString vtxName(vtx->GetName()); + if(vtxName.Contains("TPCVertex"))return kFALSE; - // no dispersion yet... + // no dispersion yet... /* TString vtxTitle(vtx->GetTitle()); if(vtxTitle.Contains("vertexer: Z")){ @@ -893,13 +930,15 @@ Bool_t AliAnalysisTaskJetServices::IsVertexValid ( const AliAODVertex* vtx) con } -Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliESDVertex* vtx) { +Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliESDVertex* vtx,const AliESDVertex* vtxSPD) { if(!IsVertexValid(vtx))return kFALSE; Float_t zvtx = vtx->GetZ(); Float_t yvtx = vtx->GetY(); Float_t xvtx = vtx->GetX(); + Float_t deltaZ = zvtx - vtxSPD->GetZ(); + if(fDebug)Printf("%s:%d deltaz %3.3f ",__FILE__,__LINE__,deltaZ); xvtx -= fVtxXMean; yvtx -= fVtxYMean; @@ -916,17 +955,25 @@ Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliESDVertex* vtx) { return kFALSE; } fEventCutInfoESD |= kVertexRCut; + + + + + if(TMath::Abs(deltaZ)>fVtxDeltaZCut)return kFALSE; + fEventCutInfoESD |= kVertexDeltaZCut; return kTRUE; } -Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliAODVertex* vtx) const { +Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliAODVertex* vtx,const AliAODVertex* vtxSPD) const { if(!IsVertexValid(vtx))return kFALSE; Float_t zvtx = vtx->GetZ(); Float_t yvtx = vtx->GetY(); Float_t xvtx = vtx->GetX(); + Float_t deltaZ = zvtx - vtxSPD->GetZ(); + if(fDebug)Printf("%s:%d deltaz %3.3f ",__FILE__,__LINE__,deltaZ); xvtx -= fVtxXMean; yvtx -= fVtxYMean; @@ -935,6 +982,12 @@ Bool_t AliAnalysisTaskJetServices::IsVertexIn (const AliAODVertex* vtx) const { Float_t r2 = yvtx*yvtx+xvtx*xvtx; Bool_t vertexIn = TMath::Abs(zvtx)fVtxDeltaZCut)vertexIn = kFALSE; + if(fDebug)Printf("%s:%d vertexIn %d ",__FILE__,__LINE__,vertexIn); + + return vertexIn; } @@ -1185,3 +1238,30 @@ Int_t AliAnalysisTaskJetServices::GetListOfTracks(TList *list){ } +void AliAnalysisTaskJetServices::SetNTrigger(Int_t n){ + if(n>0){ + fNTrigger = n; + delete [] fTriggerName; + fTriggerName = new TString [fNTrigger]; + delete [] fTriggerBit;fTriggerBit = 0; + fTriggerBit = new UInt_t [fNTrigger]; + } + else{ + fNTrigger = 0; + } +} + +void AliAnalysisTaskJetServices::SetTrigger(Int_t i,UInt_t it,const char* c){ + if(i