X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGLF%2FSPECTRA%2FChargedHadrons%2FdNdPt%2FAliPtResolAnalysis.cxx;fp=PWGLF%2FSPECTRA%2FChargedHadrons%2FdNdPt%2FAliPtResolAnalysis.cxx;h=0000000000000000000000000000000000000000;hb=c627660e3ea095ed462f5ce4ad36a184f40e0dd7;hp=2ce362941181296d5e1c5b920d255be869b477f2;hpb=d85f6819269447083582dbf4349395fe419ff1f5;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGLF/SPECTRA/ChargedHadrons/dNdPt/AliPtResolAnalysis.cxx b/PWGLF/SPECTRA/ChargedHadrons/dNdPt/AliPtResolAnalysis.cxx deleted file mode 100644 index 2ce36294118..00000000000 --- a/PWGLF/SPECTRA/ChargedHadrons/dNdPt/AliPtResolAnalysis.cxx +++ /dev/null @@ -1,332 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ -//------------------------------------------------------------------------------ -// AliPtResolAnalysis class. -// -// a. functionality: -// - fills analysis control histograms -// -// b. data members: -// - control histograms -// -// Author: J.Otwinowski 04/11/2008 -//------------------------------------------------------------------------------ - -#include "TH1.h" -#include "TH2.h" -#include "TCanvas.h" -#include "THnSparse.h" - -#include "AliHeader.h" -#include "AliInputEventHandler.h" -#include "AliAnalysisManager.h" -#include "AliGenEventHeader.h" -#include "AliStack.h" -#include "AliESDEvent.h" -#include "AliMCEvent.h" -#include "AliESDtrackCuts.h" -#include "AliLog.h" -#include "AliMultiplicity.h" -#include "AliTracker.h" - -#include "AlidNdPtEventCuts.h" -#include "AlidNdPtAcceptanceCuts.h" -#include "AliPhysicsSelection.h" -#include "AliTriggerAnalysis.h" - -#include "AliPWG0Helper.h" -#include "AlidNdPtHelper.h" -#include "AliPtResolAnalysis.h" - -using namespace std; - -ClassImp(AliPtResolAnalysis) - -//_____________________________________________________________________________ - AliPtResolAnalysis::AliPtResolAnalysis(): AlidNdPt(), - fAnalysisFolder(0), - fTrackParamHist(0), - fTrackParamHist2(0) -{ - // default constructor - Init(); -} - -//_____________________________________________________________________________ -AliPtResolAnalysis::AliPtResolAnalysis(Char_t* name, Char_t* title): AlidNdPt(name,title), - fAnalysisFolder(0), - fTrackParamHist(0), - fTrackParamHist2(0) -{ - Init(); -} - -//_____________________________________________________________________________ -AliPtResolAnalysis::~AliPtResolAnalysis() { - // - // destructor - // - if(fAnalysisFolder) delete fAnalysisFolder; fAnalysisFolder=0; - if(fTrackParamHist) delete fTrackParamHist; fTrackParamHist=0; - if(fTrackParamHist2) delete fTrackParamHist2; fTrackParamHist2=0; -} - -//_____________________________________________________________________________ -void AliPtResolAnalysis::Init(){ - // - // Generic histograms to be corrected - // - //1/pT:#sigma(1/pT) - Int_t binsTrackParamHist[2]={400,300}; - Double_t minTrackParamHist[2]={0,0}; - Double_t maxTrackParamHist[2]={1,0.015}; - - fTrackParamHist = new THnSparseF("fTrackParamHist","1/pT:#sigma(1/pT)",2,binsTrackParamHist,minTrackParamHist,maxTrackParamHist); - fTrackParamHist->GetAxis(0)->SetTitle("1/pT (GeV/c)^{-1}"); - fTrackParamHist->GetAxis(1)->SetTitle("#sigma(1/pT)"); - fTrackParamHist->Sumw2(); - - //pt:sigma(1/pT)*pT - const Int_t ptNbins = 73; - Double_t bins[74] = {0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0 }; - - Int_t binsTrackParamHist2[2]={ptNbins,200}; - Double_t minTrackParamHist2[2]={0,0}; - Double_t maxTrackParamHist2[2]={100,0.2}; - - fTrackParamHist2 = new THnSparseF("fTrackParamHist2","pT:#sigma(1/pT)*pT",2,binsTrackParamHist2,minTrackParamHist2,maxTrackParamHist2); - fTrackParamHist2->SetBinEdges(0,bins); - fTrackParamHist2->GetAxis(0)->SetTitle("pT (GeV/c)"); - fTrackParamHist2->GetAxis(1)->SetTitle("#sigma(1/pT)*pT"); - fTrackParamHist2->Sumw2(); - - // init folder - fAnalysisFolder = CreateFolder("folderdNdPt","Analysis dNdPt Folder"); -} - -//_____________________________________________________________________________ -void AliPtResolAnalysis::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent) -{ - // - // Process real and/or simulated events - // - if(!esdEvent) { - AliDebug(AliLog::kError, "esdEvent not available"); - return; - } - - // get selection cuts - AlidNdPtEventCuts *evtCuts = GetEventCuts(); - AlidNdPtAcceptanceCuts *accCuts = GetAcceptanceCuts(); - AliESDtrackCuts *esdTrackCuts = GetTrackCuts(); - - if(!evtCuts || !accCuts || !esdTrackCuts) { - AliDebug(AliLog::kError, "cuts not available"); - return; - } - - // trigger selection - Bool_t isEventTriggered = kTRUE; - AliPhysicsSelection *physicsSelection = NULL; - AliTriggerAnalysis* triggerAnalysis = NULL; - - // - AliInputEventHandler* inputHandler = (AliInputEventHandler*) AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler(); - if (!inputHandler) - { - Printf("ERROR: Could not receive input handler"); - return; - } - - if(evtCuts->IsTriggerRequired()) - { - // always MB - isEventTriggered = inputHandler->IsEventSelected() & AliVEvent::kMB; - - physicsSelection = static_cast (inputHandler->GetEventSelection()); - if(!physicsSelection) return; - //SetPhysicsTriggerSelection(physicsSelection); - - if (isEventTriggered && (GetTrigger() == AliTriggerAnalysis::kV0AND)) { - // set trigger (V0AND) - triggerAnalysis = physicsSelection->GetTriggerAnalysis(); - if(!triggerAnalysis) return; - isEventTriggered = triggerAnalysis->IsOfflineTriggerFired(esdEvent, GetTrigger()); - } - - // get reconstructed vertex - const AliESDVertex* vtxESD = 0; - Bool_t isRecVertex = kFALSE; - if(evtCuts->IsRecVertexRequired()) - { - Bool_t bRedoTPCVertex = evtCuts->IsRedoTPCVertex(); - Bool_t bUseConstraints = evtCuts->IsUseBeamSpotConstraint(); - vtxESD = AlidNdPtHelper::GetVertex(esdEvent,evtCuts,accCuts,esdTrackCuts,GetAnalysisMode(),kFALSE,bRedoTPCVertex,bUseConstraints); - isRecVertex = AlidNdPtHelper::TestRecVertex(vtxESD, esdEvent->GetPrimaryVertexSPD(), GetAnalysisMode(), kFALSE); - } - - Bool_t isEventOK = evtCuts->AcceptEvent(esdEvent,mcEvent,vtxESD) && isRecVertex; - //printf("isEventOK %d, isEventTriggered %d \n",isEventOK, isEventTriggered); - //printf("GetAnalysisMode() %d \n",GetAnalysisMode()); - - // - TObjArray *allChargedTracks=0; - // check event cuts - if(isEventOK && isEventTriggered) - { - // get all charged tracks - allChargedTracks = AlidNdPtHelper::GetAllChargedTracks(esdEvent,GetAnalysisMode()); - if(!allChargedTracks) return; - - Int_t entries = allChargedTracks->GetEntries(); - //printf("entries %d \n",entries); - - // fill histograms - for(Int_t i=0; iAt(i); - if(!track) continue; - if(track->Charge()==0) continue; - - // only postive charged - if(GetParticleMode() == AlidNdPtHelper::kPlus && track->Charge() < 0) - continue; - - // only negative charged - if(GetParticleMode() == AlidNdPtHelper::kMinus && track->Charge() > 0) - continue; - - if(esdTrackCuts->AcceptTrack(track)) - { - if(accCuts->AcceptTrack(track)) - { - //Double_t x, par[5], cov[15]; - //track->GetExternalParameters(x, p); - //track->GetExternalCovariance(cov); - - Double_t v1[2] = {track->OneOverPt(),TMath::Sqrt(track->GetSigma1Pt2())}; - fTrackParamHist->Fill(v1); - - Double_t v2[2] = {track->Pt(),track->Pt()*TMath::Sqrt(track->GetSigma1Pt2())}; - fTrackParamHist2->Fill(v2); - } - } - } - } - } -} - -//_____________________________________________________________________________ -Long64_t AliPtResolAnalysis::Merge(TCollection* const list) -{ - // Merge list of objects (needed by PROOF) - - if (!list) - return 0; - - if (list->IsEmpty()) - return 1; - - TIterator* iter = list->MakeIterator(); - TObject* obj = 0; - - // - //TList *collPhysSelection = new TList; - - // collection of generated histograms - - Int_t count=0; - while((obj = iter->Next()) != 0) { - AliPtResolAnalysis* entry = dynamic_cast(obj); - if (entry == 0) continue; - - // - fTrackParamHist->Add(entry->fTrackParamHist); - fTrackParamHist2->Add(entry->fTrackParamHist2); - } - -return count; -} - -//_____________________________________________________________________________ -void AliPtResolAnalysis::Analyse() -{ - // Analyse histograms - // - TH1::AddDirectory(kFALSE); - TObjArray *aFolderObj = new TObjArray; - if(!aFolderObj) return; - - // - // Reconstructed event vertex - // - - // export objects to analysis folder - fAnalysisFolder = ExportToFolder(aFolderObj); - if(!fAnalysisFolder) { - if(aFolderObj) delete aFolderObj; - return; - } - - // delete only TObjArray - if(aFolderObj) delete aFolderObj; -} - -//_____________________________________________________________________________ -TFolder* AliPtResolAnalysis::ExportToFolder(TObjArray * const array) -{ - // recreate folder every time and export objects to new one - // - if(!array) return NULL; - - AliPtResolAnalysis * comp=this; - TFolder *folder = comp->GetAnalysisFolder(); - - TString name, title; - TFolder *newFolder = 0; - Int_t i = 0; - Int_t size = array->GetSize(); - - if(folder) { - // get name and title from old folder - name = folder->GetName(); - title = folder->GetTitle(); - - // delete old one - delete folder; - - // create new one - newFolder = CreateFolder(name.Data(),title.Data()); - newFolder->SetOwner(); - - // add objects to folder - while(i < size) { - newFolder->Add(array->At(i)); - i++; - } - } - -return newFolder; -} - -//_____________________________________________________________________________ -TFolder* AliPtResolAnalysis::CreateFolder(TString name,TString title) { -// create folder for analysed histograms -// -TFolder *folder = 0; - folder = new TFolder(name.Data(),title.Data()); - - return folder; -}