From: gconesab Date: Thu, 18 Mar 2010 20:55:22 +0000 (+0000) Subject: JetCorrel correction of coding violations, and other style and memory consumption... X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=7488b3de26cf8636a2abecb8b374c0703fa225c1 JetCorrel correction of coding violations, and other style and memory consumption fixes(Paul Constantin) --- diff --git a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx index 36e37aadfd5..968ba20471c 100644 --- a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx +++ b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx @@ -28,7 +28,7 @@ using namespace std; ClassImp(AliAnalysisTaskJetCorrel) AliAnalysisTaskJetCorrel::AliAnalysisTaskJetCorrel() : - AliAnalysisTaskSE("JetCorrelTask"), jcESD(NULL), fOutputContainer(new TList), + AliAnalysisTaskSE("JetCorrelTask"), fjcESD(NULL), fOutputContainer(new TList), fSelector(new AliJetCorrelSelector), fNumCorrel(0), fNumTrigg(0), fNumAssoc(0), fNumEvts(0), fMaker(new AliJetCorrelMaker), fWriter(new AliJetCorrelWriter), fReader(new AliJetCorrelReader), fMixer(new AliJetCorrelMixer), fTriggList(NULL), fAssocList(NULL) { @@ -36,7 +36,7 @@ AliAnalysisTaskJetCorrel::AliAnalysisTaskJetCorrel() : } AliAnalysisTaskJetCorrel::AliAnalysisTaskJetCorrel(AliJetCorrelSelector *s) : - AliAnalysisTaskSE("JetCorrelTask"), jcESD(NULL), fOutputContainer(new TList), + AliAnalysisTaskSE("JetCorrelTask"), fjcESD(NULL), fOutputContainer(new TList), fSelector(s), fNumCorrel(0), fNumTrigg(0), fNumAssoc(0), fNumEvts(0), fMaker(new AliJetCorrelMaker), fWriter(new AliJetCorrelWriter), fReader(new AliJetCorrelReader), fMixer(new AliJetCorrelMixer), fTriggList(NULL), fAssocList(NULL) { @@ -77,8 +77,8 @@ void AliAnalysisTaskJetCorrel::ConnectInputData(Option_t *) { if(tree){ AliESDInputHandler *esdH = dynamic_cast(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); if(esdH){ - jcESD = dynamic_cast(esdH->GetEvent()); - if(!jcESD) {std::cerr<<"AliAnalysisTaskJetCorrel::ConnectInputData - ERROR: no event"<(esdH->GetEvent()); + if(!fjcESD) {std::cerr<<"AliAnalysisTaskJetCorrel::ConnectInputData - ERROR: no event"<(InputEvent()); - if(!jcESD) + //fjcESD = dynamic_cast(InputEvent()); + if(!fjcESD) {std::cerr<<"AliAnalysisTaskJetCorrel::Exec() - ERROR: Cannot get event "<SetEvent(jcESD); + fReader->SetEvent(fjcESD); // get global event pars and apply global cuts - if(!fSelector->SelectedEvtTrigger(jcESD)) return; + if(!fSelector->SelectedEvtTrigger(fjcESD)) return; Float_t cent = fReader->GetMultiplicity(); // use multiplicity in p-p Float_t zvtx = fReader->GetVertex(); Int_t cBin = fSelector->GetBin(centr,cent); diff --git a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.h b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.h index 47cee4383ac..67e188c54c5 100644 --- a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.h +++ b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.h @@ -1,5 +1,5 @@ -#ifndef __ALIANALYSISTASKJETCORREL_H__ -#define __ALIANALYSISTASKJETCORREL_H__ +#ifndef ALIANALYSISTASKJETCORREL_H +#define ALIANALYSISTASKJETCORREL_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id: $ */ @@ -31,7 +31,7 @@ class AliAnalysisTaskJetCorrel : public AliAnalysisTaskSE { virtual void Terminate(Option_t *option); private: - AliESDEvent *jcESD; + AliESDEvent *fjcESD; TList *fOutputContainer; // Histogram container AliJetCorrelSelector *fSelector; // User selection object UInt_t fNumCorrel, fNumTrigg, fNumAssoc, fNumEvts; // counters @@ -41,7 +41,8 @@ class AliAnalysisTaskJetCorrel : public AliAnalysisTaskSE { AliJetCorrelMixer *fMixer; // Event mixing object CorrelList_t *fTriggList, *fAssocList; // Trigger&Associated particle lists - void CrossCorrelate(CorrelList_t * const TriggList,CorrelList_t * const AssocList, UInt_t cBin, UInt_t vBin, UInt_t iCor); + void CrossCorrelate(CorrelList_t * const TriggList, CorrelList_t * const AssocList, + UInt_t cBin, UInt_t vBin, UInt_t iCor); // disable (make private) copy constructor and assignment operator: AliAnalysisTaskJetCorrel(const AliAnalysisTaskJetCorrel&); diff --git a/PWG4/JetCorrel/AliJetCorrelMaker.cxx b/PWG4/JetCorrel/AliJetCorrelMaker.cxx index 5593eec9f65..becb75bd368 100644 --- a/PWG4/JetCorrel/AliJetCorrelMaker.cxx +++ b/PWG4/JetCorrel/AliJetCorrelMaker.cxx @@ -129,7 +129,7 @@ Bool_t AliJetCorrelMaker::Init(UInt_t s, UInt_t * const v){ return kTRUE; } -Bool_t AliJetCorrelMaker::Check(){ +Bool_t AliJetCorrelMaker::Check() const { // performs initialization sanity checks if(fNumTrigg<1 || fNumAssoc<1) return kFALSE; if(fNumTrigg>fNumCorrel || fNumAssoc>fNumCorrel) return kFALSE; @@ -182,7 +182,7 @@ Bool_t AliJetCorrelMaker::RecoTrigger() const { return kFALSE; } -void AliJetCorrelMaker::Show(){ +void AliJetCorrelMaker::Show() const { // print out whole correlation setup std::cout<<"Number of Correlations:"<AddLast(partList->DeepCopy()); } -void AliJetCorrelMixer::Mix(UInt_t vBin, UInt_t cBin, UInt_t it, UInt_t ia, UInt_t ic){ +void AliJetCorrelMixer::Mix(UInt_t vBin, UInt_t cBin, UInt_t it, UInt_t ia, UInt_t ic) { // rolling buffer mixing method TListIter* iterAssocPool=(TListIter*)fPool[assocs][ia][vBin][cBin]->MakeIterator(); while(fPool[triggs][it][vBin][cBin]->GetSize()>0){ // evaluate here due to popping - TriggEvnt = (CorrelList_t*)fPool[triggs][it][vBin][cBin]->First(); - TriggIter = TriggEvnt->Head(); + fTriggEvnt = (CorrelList_t*)fPool[triggs][it][vBin][cBin]->First(); + fTriggIter = fTriggEvnt->Head(); - while((AssocEvnt=(CorrelList_t*)iterAssocPool->Next())){ - AssocIter = AssocEvnt->Head(); + while((fAssocEvnt=(CorrelList_t*)iterAssocPool->Next())){ + fAssocIter = fAssocEvnt->Head(); - if(TriggEvnt->EvtID()==AssocEvnt->EvtID()) continue; // don't mix same event! + if(fTriggEvnt->EvtID()==fAssocEvnt->EvtID()) continue; // don't mix same event! - while(!TriggIter.HasEnded()){ - while(!AssocIter.HasEnded()){ - fWriter->FillCorrelations(mixed,ic,cBin,vBin,TriggIter.Data(),AssocIter.Data()); // trigg first! - AssocIter.Move(); + while(!fTriggIter.HasEnded()){ + while(!fAssocIter.HasEnded()){ + fWriter->FillCorrelations(mixed,ic,cBin,vBin,fTriggIter.Data(),fAssocIter.Data()); // trigg first! + fAssocIter.Move(); } // loop over associated particles - AssocIter = AssocEvnt->Head(); // reset associated particle iterator to list head - TriggIter.Move(); + fAssocIter = fAssocEvnt->Head(); // reset associated particle iterator to list head + fTriggIter.Move(); } // loop over trigger particles - TriggIter = TriggEvnt->Head(); // reset trigger particle iterator to list head + fTriggIter = fTriggEvnt->Head(); // reset trigger particle iterator to list head } // loop over associated pool fPool[triggs][it][vBin][cBin]->RemoveFirst(); } // if trigger pool is not empty @@ -116,7 +116,7 @@ void AliJetCorrelMixer::CleanPool(PoolType_t pType){ } } -UInt_t AliJetCorrelMixer::PoolSize(PoolType_t pType, UInt_t vBin, UInt_t cBin){ +UInt_t AliJetCorrelMixer::PoolSize(PoolType_t pType, UInt_t vBin, UInt_t cBin) const { // computes (static) pool size UInt_t totalPoolSize=0; UInt_t partSize = sizeof(CorrelParticle_t); @@ -131,7 +131,7 @@ UInt_t AliJetCorrelMixer::PoolSize(PoolType_t pType, UInt_t vBin, UInt_t cBin){ return totalPoolSize/1024; } -void AliJetCorrelMixer::ShowSummary(PoolType_t pType, UInt_t pIdx, UInt_t vBin, UInt_t cBin){ +void AliJetCorrelMixer::ShowSummary(PoolType_t pType, UInt_t pIdx, UInt_t vBin, UInt_t cBin) const { // pool printout method UInt_t totalPoolSize=0; TListIter* iter=(TListIter*)fPool[pType][pIdx][vBin][cBin]->MakeIterator(); @@ -143,7 +143,7 @@ void AliJetCorrelMixer::ShowSummary(PoolType_t pType, UInt_t pIdx, UInt_t vBin, std::cout<GetNumberOfTracks(); // ESD no of global tracks - const AliMultiplicity* m = jcESD->GetMultiplicity(); // SPD no of tracklets + // return fjcESD->GetNumberOfTracks(); // ESD no of global tracks + const AliMultiplicity* m = fjcESD->GetMultiplicity(); // SPD no of tracklets return m->GetNumberOfTracklets(); } -Float_t AliJetCorrelReader::GetVertex(){ +Float_t AliJetCorrelReader::GetVertex() const { // event vertex - if(!jcESD){ - std::cerr<<"AliJetCorrelReader::GetVertex() - ERROR : jcESD not set!"<GetPrimaryVertex()->GetZ(); + return fjcESD->GetPrimaryVertex()->GetZ(); } -Bool_t AliJetCorrelReader::VtxOutPipe(){ +Bool_t AliJetCorrelReader::VtxOutPipe() const { // returns true if vertex R >= beam pipe - Float_t xVtx2 = jcESD->GetPrimaryVertex()->GetX()*jcESD->GetPrimaryVertex()->GetX(); - Float_t yVtx2 = jcESD->GetPrimaryVertex()->GetY()*jcESD->GetPrimaryVertex()->GetY(); + Float_t xVtx2 = fjcESD->GetPrimaryVertex()->GetX()*fjcESD->GetPrimaryVertex()->GetX(); + Float_t yVtx2 = fjcESD->GetPrimaryVertex()->GetY()*fjcESD->GetPrimaryVertex()->GetY(); if(TMath::Sqrt(xVtx2+yVtx2)>3) return kTRUE; return kFALSE; } @@ -126,13 +128,13 @@ void AliJetCorrelReader::FillESDTrackLists(CorrelList_t *list1, CorrelList_t *li // fills trigg&assoc lists simultaneously with ESD tracks PartType_t partType = list1->PartID(); // by definition the two lists store same particle - UInt_t nTracks = jcESD->GetNumberOfTracks() ; + UInt_t nTracks = fjcESD->GetNumberOfTracks() ; if(nTracks<1) return; for(register UInt_t i=0; iGetTrack(i); + AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i); Float_t pT = track->Pt(); - if(pTMinAssocPt()) continue; + if(pTMinLowBin(assoc)) continue; if(fSelector->GenQA()) fWriter->FillTrackQA(track,0); if(fSelector->LowQualityTrack(track)) continue; if(!fSelector->PassPID(track,partType)) continue; @@ -151,10 +153,10 @@ void AliJetCorrelReader::FillESDTrackLists(CorrelList_t *list1, CorrelList_t *li hadr->SetMass(track->GetMass()); hadr->SetID(partType); - if(list1->PoolID()==assocs && fSelector->AssocBin(pT)>=0) list1->Push(hadr->Copy()); - if(list1->PoolID()==triggs && fSelector->TriggBin(pT)>=0) list1->Push(hadr->Copy()); - if(list2->PoolID()==assocs && fSelector->AssocBin(pT)>=0) list2->Push(hadr->Copy()); - if(list2->PoolID()==triggs && fSelector->TriggBin(pT)>=0) list2->Push(hadr->Copy()); + if(list1->PoolID()==assocs && fSelector->GetBin(assoc,pT)>=0) list1->Push(hadr->Copy()); + if(list1->PoolID()==triggs && fSelector->GetBin(trigg,pT)>=0) list1->Push(hadr->Copy()); + if(list2->PoolID()==assocs && fSelector->GetBin(assoc,pT)>=0) list2->Push(hadr->Copy()); + if(list2->PoolID()==triggs && fSelector->GetBin(trigg,pT)>=0) list2->Push(hadr->Copy()); delete hadr; } // ESD track loop } @@ -164,13 +166,13 @@ void AliJetCorrelReader::FillESDTrackList(CorrelList_t *list){ // (2) electrons to be used in dielectron reconstruction. Assoc pT cuts apply then... PartType_t partType = list->PartID(); - UInt_t nTracks = jcESD->GetNumberOfTracks(); + UInt_t nTracks = fjcESD->GetNumberOfTracks(); if(nTracks<1) return; for(register UInt_t i=0; iGetTrack(i); + AliESDtrack *track = (AliESDtrack*)fjcESD->GetTrack(i); Float_t pT = track->Pt(); - if(pTMinAssocPt()) continue; + if(pTMinLowBin(assoc)) continue; if(fSelector->GenQA()) fWriter->FillTrackQA(track,0); if(fSelector->LowQualityTrack(track)) continue; if(fSelector->GenQA()) fWriter->FillTrackQA(track,1); @@ -240,10 +242,10 @@ void AliJetCorrelReader::FillParentList(CorrelList_t *ParentList, CorrelList_t * while(!iterChild2.HasEnded()){ CorrelParticle_t *child2 = iterChild2.Data(); iterChild2.Move(); CorrelRecoParent_t *parent = new CorrelRecoParent_t; - parent->SetEvent(jcESD); + parent->SetEvent(fjcESD); Bool_t goodParent = parent->Reconstruct(child1, child2, fSelector->UseAliKF()); - Bool_t inPtRange = (ParentList->PoolID()==assocs && fSelector->AssocBin(parent->Pt())>=0) || - (ParentList->PoolID()==triggs && fSelector->TriggBin(parent->Pt())>=0); + Bool_t inPtRange = (ParentList->PoolID()==assocs && fSelector->GetBin(assoc,parent->Pt())>=0) || + (ParentList->PoolID()==triggs && fSelector->GetBin(trigg,parent->Pt())>=0); if(goodParent && inPtRange) ParentList->Push(parent); } // 2nd particle loop } // 1st particle loop diff --git a/PWG4/JetCorrel/AliJetCorrelReader.h b/PWG4/JetCorrel/AliJetCorrelReader.h index ca9ef2163b2..dc39912e564 100644 --- a/PWG4/JetCorrel/AliJetCorrelReader.h +++ b/PWG4/JetCorrel/AliJetCorrelReader.h @@ -1,11 +1,13 @@ -#ifndef __ALIJETCORRELREADER_H__ -#define __ALIJETCORRELREADER_H__ +#ifndef ALIJETCORRELREADER_H +#define ALIJETCORRELREADER_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id: $ */ -//______________________________________________________________________________________ -// Class for input (ESD or AOD) reading and filling of Trigger&Associated particle lists +//__________________________________________________________________________ +// Class for input (ESD or AOD) reading. +// At the moment only ESD input is really implemented, AOD to be added later. +// Its products are the Trigger&Associated particle lists //-- Author: Paul Constantin #include "AliJetCorrelWriter.h" @@ -18,15 +20,15 @@ class AliJetCorrelReader : public TObject { ~AliJetCorrelReader(); void Init(AliJetCorrelSelector * const s, AliJetCorrelWriter * const w); - void SetEvent(AliESDEvent * const e) {jcESD=e;} + void SetEvent(AliESDEvent * const e) {fjcESD=e;} - Float_t GetMultiplicity(); - Float_t GetVertex(); - Bool_t VtxOutPipe(); + Float_t GetMultiplicity() const; + Float_t GetVertex() const; + Bool_t VtxOutPipe() const; void FillLists(CorrelList_t* list1, CorrelList_t* list2); private: - AliESDEvent *jcESD; // input event (ESD/AOD) + AliESDEvent *fjcESD; // input event (ESD/AOD) AliJetCorrelSelector *fSelector; // user selection object AliJetCorrelWriter *fWriter; // output writer object diff --git a/PWG4/JetCorrel/AliJetCorrelSelector.cxx b/PWG4/JetCorrel/AliJetCorrelSelector.cxx index abb25dbe465..89f27802fd4 100644 --- a/PWG4/JetCorrel/AliJetCorrelSelector.cxx +++ b/PWG4/JetCorrel/AliJetCorrelSelector.cxx @@ -27,14 +27,15 @@ using namespace std; ClassImp(AliJetCorrelSelector) AliJetCorrelSelector::AliJetCorrelSelector() : - fGenQA(kFALSE), fDPhiNumBins(0), fDEtaNumBins(0), fNumCorrel(0), nEvtTriggs(0), - fPoolDepth(0), fCorrelType(NULL), fEvtTriggs(NULL), minTriggPt(0), maxTriggPt(0), bwTriggPt(0), - minAssocPt(0), maxAssocPt(0), bwAssocPt(0), fITSRefit(kFALSE), fTPCRefit(kFALSE), fTRDRefit(kFALSE), + fGenQA(kFALSE), fDPhiNumBins(0), fDEtaNumBins(0), fNumCorrel(0), fNumEvtTriggs(0), fPoolDepth(0), + fCorrelType(NULL), fEvtTriggs(NULL), fITSRefit(kFALSE), fTPCRefit(kFALSE), fTRDRefit(kFALSE), fRejectKinkChild(kFALSE), fMaxEta(0), fMaxNsigmaVtx(0), fMaxTrkVtx(0), fMaxITSChi2(0), fMaxTPCChi2(0), - fMinNClusITS(0), fMinNClusTPC(0), trkMinProx(0), fUseAliKF(kFALSE) { + fMinNClusITS(0), fMinNClusTPC(0), fTrkMinProx(0), fUseAliKF(kFALSE) { // (default) constructor fNumBins[centr] = 0; fBinning[centr] = NULL; fNumBins[zvert] = 0; fBinning[zvert] = NULL; + fNumBins[trigg] = 0; fBinning[trigg] = NULL; + fNumBins[assoc] = 0; fBinning[assoc] = NULL; } AliJetCorrelSelector::~AliJetCorrelSelector(){ @@ -42,11 +43,15 @@ AliJetCorrelSelector::~AliJetCorrelSelector(){ if(fCorrelType) delete [] fCorrelType; fNumCorrel = 0; if(fEvtTriggs) delete [] fEvtTriggs; - nEvtTriggs = 0; + fNumEvtTriggs = 0; if(fBinning[centr]) delete [] fBinning[centr]; fNumBins[centr] = 0; if(fBinning[zvert]) delete [] fBinning[zvert]; fNumBins[zvert] = 0; + if(fBinning[trigg]) delete [] fBinning[trigg]; + fNumBins[trigg] = 0; + if(fBinning[assoc]) delete [] fBinning[assoc]; + fNumBins[assoc] = 0; } void AliJetCorrelSelector::SetCorrelTypes(UInt_t s, UInt_t * const v){ @@ -68,9 +73,9 @@ void AliJetCorrelSelector::SetTriggers(UInt_t s, TString * const v){ // fills the array of event triggers if(s<1){std::cerr<<"AliJetCorrelSelector::SetTriggers - empty array"<9){std::cerr<<"AliJetCorrelSelector: event trigger array too big!"<kMAXTRIGBIN){std::cerr<<"AliJetCorrelSelector: trigger array too big!"<999.){ + std::cerr<<"AliJetCorrelSelector::SetBinningTrigg - read error? val["<kMAXTRIGBIN){std::cerr<<"AliJetCorrelSelector: associated array too big!"<999.){ + std::cerr<<"AliJetCorrelSelector::SetBinningAssoc - read error? val["<=kMAXASSOBIN) - {std::cerr<<"AliJetCorrelSelector::NumAssocPt - Error: outside range"<=maxAssocPt) return -1; - return TMath::FloorNint((pT-minAssocPt)/bwAssocPt); -} - -UInt_t AliJetCorrelSelector::NumTriggPt() { - UInt_t nBins = UInt_t((maxTriggPt-minTriggPt)/bwTriggPt); - if(nBins>=kMAXTRIGBIN) - {std::cerr<<"AliJetCorrelSelector::NumTrigPt - Error: outside range"<=maxTriggPt) return -1; - return TMath::FloorNint((pT-minTriggPt)/bwTriggPt); -} - -void AliJetCorrelSelector::Show(){ +void AliJetCorrelSelector::Show() const { // print out all user selections std::cout<<"Generic selections: "<"<"<GetFiredTriggerClasses(); - if(nEvtTriggs==1 && fEvtTriggs[0].Contains("ALL")) return kTRUE; - for(UInt_t k=0; ktrkMinProx) return kFALSE; + if(dist>fTrkMinProx) return kFALSE; return kTRUE; } -Bool_t AliJetCorrelSelector::LowQualityTrack(AliESDtrack* track){ +Bool_t AliJetCorrelSelector::LowQualityTrack(AliESDtrack* track) const { // selects low quality tracks if(track->Eta()>fMaxEta) return kTRUE; UInt_t status = track->GetStatus(); @@ -237,7 +236,7 @@ Bool_t AliJetCorrelSelector::LowQualityTrack(AliESDtrack* track){ return kFALSE; } -Bool_t AliJetCorrelSelector::PassPID(AliESDtrack* track, PartType_t PartType){ +Bool_t AliJetCorrelSelector::PassPID(AliESDtrack* track, PartType_t PartType) const { // checks if a track has the required ID Bool_t hasReqPID = kFALSE; Stat_t fPid; @@ -273,7 +272,7 @@ Bool_t AliJetCorrelSelector::PassPID(AliESDtrack* track, PartType_t PartType){ return hasReqPID; } -Float_t AliJetCorrelSelector::GetSigmaToVertex(AliESDtrack* track){ +Float_t AliJetCorrelSelector::GetSigmaToVertex(AliESDtrack* track) const { // Calculates the number of sigma to the vertex; from ANALYSIS/AliESDtrackCuts Float_t b[2], bRes[2], bCov[3]; track->GetImpactParameters(b,bCov); @@ -289,7 +288,7 @@ Float_t AliJetCorrelSelector::GetSigmaToVertex(AliESDtrack* track){ return nSigma; } -void AliJetCorrelSelector::GetPID(AliESDtrack* track, Stat_t& fpid, Stat_t& fweight){ +void AliJetCorrelSelector::GetPID(AliESDtrack* track, Stat_t& fpid, Stat_t& fweight) const { // Finds most probable particle: 0=Electron, 1=Muon, 2=Pion, 3=Kaon, 4=Proton fpid = -1; fweight = -1; diff --git a/PWG4/JetCorrel/AliJetCorrelSelector.h b/PWG4/JetCorrel/AliJetCorrelSelector.h index 457adbd31b9..8a309de2416 100644 --- a/PWG4/JetCorrel/AliJetCorrelSelector.h +++ b/PWG4/JetCorrel/AliJetCorrelSelector.h @@ -1,5 +1,5 @@ -#ifndef __ALIJETCORRELSELECTOR_H__ -#define __ALIJETCORRELSELECTOR_H__ +#ifndef ALIJETCORRELSELECTOR_H +#define ALIJETCORRELSELECTOR_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id: $ */ @@ -22,30 +22,26 @@ class AliJetCorrelSelector : public TObject { ~AliJetCorrelSelector(); // Selection getters: - UInt_t PoolDepth() {return fPoolDepth;} - UInt_t NoOfCorrel() {return fNumCorrel;} - UInt_t* CorrelTypes() {return fCorrelType;} - UInt_t NoOfBins(BinType_t cType) {return fNumBins[cType]-1;} - Float_t BinBorder(BinType_t cType, UInt_t ii); - Int_t GetBin(BinType_t cType, Float_t val); - Float_t MinAssocPt() {return minAssocPt;} - Float_t MaxAssocPt() {return maxAssocPt;} - UInt_t NumAssocPt(); - Float_t MinTriggPt() {return minTriggPt;} - Float_t MaxTriggPt() {return maxTriggPt;} - UInt_t NumTriggPt(); - Bool_t GenQA() {return fGenQA;} - Bool_t UseAliKF() {return fUseAliKF;} - UInt_t DPhiNumBins() {return fDPhiNumBins;} - UInt_t DEtaNumBins() {return fDEtaNumBins;} - void Show(); + UInt_t PoolDepth() const {return fPoolDepth;} + UInt_t NoOfCorrel() const {return fNumCorrel;} + UInt_t* CorrelTypes() const {return fCorrelType;} + UInt_t NoOfBins(BinType_t cType) const {return fNumBins[cType]-1;} + Float_t BinBorder(BinType_t cType, UInt_t ii) const; + Float_t MinLowBin(BinType_t cType) const {return fBinning[cType][0];} + Float_t MaxHighBin(BinType_t cType) const {return fBinning[cType][fNumBins[cType]-1];} + Int_t GetBin(BinType_t cType, Float_t val) const; + Bool_t GenQA() const {return fGenQA;} + Bool_t UseAliKF() const {return fUseAliKF;} + UInt_t DPhiNumBins() const {return fDPhiNumBins;} + UInt_t DEtaNumBins() const {return fDEtaNumBins;} + void Show() const; // Selection Setters: void SetPoolDepth(UInt_t v) {fPoolDepth=v;} void SetCorrelTypes(UInt_t s, UInt_t * const v); void SetBinningCentr(UInt_t s, Float_t * const v); void SetBinningZvert(UInt_t s, Float_t * const v); - void SetBinningTrigg(Float_t min, Float_t max, Float_t bw); - void SetBinningAssoc(Float_t min, Float_t max, Float_t bw); + void SetBinningTrigg(UInt_t s, Float_t * const v); + void SetBinningAssoc(UInt_t s, Float_t * const v); void SetTriggers(UInt_t s, TString * const v); void SetITSRefit(Bool_t v) {fITSRefit=v;} void SetTPCRefit(Bool_t v) {fTPCRefit=v;} @@ -61,29 +57,25 @@ class AliJetCorrelSelector : public TObject { void SetQA(Bool_t v) {fGenQA=v;} void SetDPhiNumBins(UInt_t v) {fDPhiNumBins=v;} void SetDEtaNumBins(UInt_t v) {fDEtaNumBins=v;} - void SetTrkProximityCut(Float_t v) {trkMinProx=v;} + void SetTrkProximityCut(Float_t v) {fTrkMinProx=v;} void SetUseAliKF(Bool_t v) {fUseAliKF=v;} // Cutting methods: - Int_t AssocBin(Float_t pT); - Int_t TriggBin(Float_t pT); - Bool_t SelectedEvtTrigger(AliESDEvent * const jcESD); - Bool_t CloseTrackPair(Float_t dist); - Bool_t LowQualityTrack(AliESDtrack* t); - Bool_t PassPID(AliESDtrack* t, PartType_t pType); - Float_t GetSigmaToVertex(AliESDtrack* trk); - void GetPID(AliESDtrack* trk, Stat_t& fpid, Stat_t& fweight); + Bool_t SelectedEvtTrigger(AliESDEvent * const jcESD) const; + Bool_t CloseTrackPair(Float_t dist) const; + Bool_t LowQualityTrack(AliESDtrack* t) const; + Bool_t PassPID(AliESDtrack* t, PartType_t pType) const; + Float_t GetSigmaToVertex(AliESDtrack* trk) const; + void GetPID(AliESDtrack* trk, Stat_t& fpid, Stat_t& fweight) const; private: // Generic Selections: Bool_t fGenQA; // generate QA histos UInt_t fDPhiNumBins, fDEtaNumBins; // number of bins in DeltaPhi, DeltaEta histos - UInt_t fNumCorrel, nEvtTriggs, fPoolDepth; // number of correlations, event triggers, pool depth - UInt_t *fCorrelType; // array of correlation types - TString *fEvtTriggs; // array of event triggers - UInt_t fNumBins[2]; // number of bins: centr, zvert - Float_t* fBinning[2]; // bin margins: centr, zvert - Float_t minTriggPt, maxTriggPt, bwTriggPt; // trigg Pt binning - Float_t minAssocPt, maxAssocPt, bwAssocPt; // assoc Pt binning + UInt_t fNumCorrel, fNumEvtTriggs, fPoolDepth; // number of correlations, event triggers, pool depth + UInt_t* fCorrelType; //! array of correlation types + TString* fEvtTriggs; //! array of event triggers + UInt_t fNumBins[4]; // number of bins: centr, zvert, trigg, assoc + Float_t* fBinning[4]; //! bin margins: centr, zvert, trigg, assoc // Track Selections: Bool_t fITSRefit, fTPCRefit, fTRDRefit, fRejectKinkChild; // on/off cuts Float_t fMaxEta; // single-particle eta cut @@ -91,14 +83,14 @@ class AliJetCorrelSelector : public TObject { Float_t fMaxTrkVtx; // track-primary vertex cut (value) Float_t fMaxITSChi2, fMaxTPCChi2; // ITS/TPC Chi2/cluster cut UInt_t fMinNClusITS, fMinNClusTPC; // ITS/TPC number of clusters cut - Float_t trkMinProx; // two-track proximity cut (dist at TPC entrance) + Float_t fTrkMinProx; // two-track proximity cut (dist at TPC entrance) Bool_t fUseAliKF; // use AliKF or TLorentzVector for parent reconstruction // disable (make private) copy constructor, and assignment operator: AliJetCorrelSelector(const AliJetCorrelSelector&); AliJetCorrelSelector& operator=(const AliJetCorrelSelector&); - ClassDef(AliJetCorrelSelector, 1); + ClassDef(AliJetCorrelSelector, 1); //AliJetCorrelSelector }; #endif diff --git a/PWG4/JetCorrel/AliJetCorrelWriter.cxx b/PWG4/JetCorrel/AliJetCorrelWriter.cxx index fd46f4812eb..421661402db 100644 --- a/PWG4/JetCorrel/AliJetCorrelWriter.cxx +++ b/PWG4/JetCorrel/AliJetCorrelWriter.cxx @@ -16,6 +16,7 @@ //______________________________________________________ // Class for output (histograms) definition and filling. +// Contains also the methods for calculation of correlation parameters. //-- Author: Paul Constantin #include "AliJetCorrelWriter.h" @@ -25,8 +26,8 @@ using namespace std; ClassImp(AliJetCorrelWriter) AliJetCorrelWriter::AliJetCorrelWriter() : - fSelector(NULL), fMaker(NULL), hname(""), htit(""), fRecoTrigg(kFALSE), fRndm(6251093), - hBinsCentr(NULL), hBinsZVert(NULL), hCentr(NULL), hZVert(NULL), ntuParent(NULL) { + fSelector(NULL), fMaker(NULL), fHname(""), fHtit(""), fRecoTrigg(kFALSE), fRndm(6251093), + fHBinsCentr(NULL), fHBinsZVert(NULL), fHBinsTrigg(NULL), fHBinsAssoc(NULL),fHCentr(NULL), fHZVert(NULL), ntuParent(NULL) { // constructor for(UInt_t i=0; iNoOfAssoc(); UInt_t nBinsCentr = fSelector->NoOfBins(centr); UInt_t nBinsZVert = fSelector->NoOfBins(zvert); - UInt_t nBinsTrigg = fSelector->NumTriggPt(); - Float_t minTrigg = fSelector->MinTriggPt(); - Float_t maxTrigg = fSelector->MaxTriggPt(); - UInt_t nBinsAssoc = fSelector->NumAssocPt(); - Float_t minAssoc = fSelector->MinAssocPt(); - Float_t maxAssoc = fSelector->MaxAssocPt(); + UInt_t nBinsTrigg = fSelector->NoOfBins(trigg); + UInt_t nBinsAssoc = fSelector->NoOfBins(assoc); + Float_t minTrigg = fSelector->MinLowBin(trigg); + Float_t maxTrigg = fSelector->MaxHighBin(trigg); + Float_t minAssoc = fSelector->MinLowBin(assoc); + Float_t maxAssoc = fSelector->MaxHighBin(assoc); for(UInt_t ic=0; ic each bin - histosContainer->AddLast(hTriggPt[tt][ic]); + fHtit="type:"; fHtit+=tt; fHtit+=" cent:"; fHtit+=ic; + fHname = "fHTriggPt"; fHname+=tt; fHname+=ic; + fHTriggPt[tt][ic] = new TH1F(fHname, fHtit, 10*nBinsTrigg, minTrigg, maxTrigg); // for each bin + histosContainer->AddLast(fHTriggPt[tt][ic]); } // loop over trigger types for(UInt_t at=0; at each bin - histosContainer->AddLast(hAssocPt[at][ic]); + fHtit="type:"; fHtit+=at; fHtit+=" cent:"; fHtit+=ic; + fHname = "fHAssocPt"; fHname+=at; fHname+=ic; + fHAssocPt[at][ic] = new TH1F(fHname, fHtit, 10*nBinsAssoc, minAssoc, maxAssoc); // for each bin + histosContainer->AddLast(fHAssocPt[at][ic]); } // loop over trigger types } // centrality binning loop - hCentr = new TH1F("hCentr","centrality distribution",100, 0., 100.); - histosContainer->AddLast(hCentr); - hZVert = new TH1F("hZVert","vertex distribution",100, -50., 50.); - histosContainer->AddLast(hZVert); + fHCentr = new TH1F("fHCentr","centrality distribution",100, 0., 100.); + histosContainer->AddLast(fHCentr); + fHZVert = new TH1F("fHZVert","vertex distribution",100, -50., 50.); + histosContainer->AddLast(fHZVert); - hBinsCentr = new TH1F("hBinsCentr","centrality binning", nBinsCentr+1, 0, 1); - histosContainer->AddLast(hBinsCentr); + fHBinsCentr = new TH1F("fHBinsCentr","centrality binning", nBinsCentr+1, 0, 1); + histosContainer->AddLast(fHBinsCentr); for(UInt_t i=1;i<=nBinsCentr+1; i++) - hBinsCentr->SetBinContent(i,fSelector->BinBorder(centr,i-1)); - hBinsZVert = new TH1F("hBinsZVert","centrality binning", nBinsZVert+1, 0, 1); - histosContainer->AddLast(hBinsZVert); + fHBinsCentr->SetBinContent(i,fSelector->BinBorder(centr,i-1)); + fHBinsZVert = new TH1F("fHBinsZVert","centrality binning", nBinsZVert+1, 0, 1); + histosContainer->AddLast(fHBinsZVert); for(UInt_t i=1;i<=nBinsZVert+1; i++) - hBinsZVert->SetBinContent(i,fSelector->BinBorder(zvert,i-1)); + fHBinsZVert->SetBinContent(i,fSelector->BinBorder(zvert,i-1)); + fHBinsTrigg = new TH1F("fHBinsTrigg","trigger binning", nBinsTrigg+1, 0, 1); + histosContainer->AddLast(fHBinsTrigg); + for(UInt_t i=1;i<=nBinsTrigg+1; i++) + fHBinsTrigg->SetBinContent(i,fSelector->BinBorder(trigg,i-1)); + fHBinsAssoc = new TH1F("fHBinsAssoc","associated binning", nBinsAssoc+1, 0, 1); + histosContainer->AddLast(fHBinsAssoc); + for(UInt_t i=1;i<=nBinsAssoc+1; i++) + fHBinsAssoc->SetBinContent(i,fSelector->BinBorder(assoc,i-1)); } void AliJetCorrelWriter::CreateQA(TList *histosContainer){ // books QA histograms TString when[2] = {"before cuts","after cuts"}; for(UInt_t i=0; i<2; i++){ - hname = "hTrkITSQA"; hname += i; - htit = "ITS nClust vs Chi2/nClust "; htit += when[i]; - hTrkITSQA[i] = new TH2F(hname,htit,20,0.,20.,50,0.,10.); - histosContainer->AddLast(hTrkITSQA[i]); - hname = "hTrkTPCQA"; hname += i; - htit = "TPC nClust vs Chi2/nClust "; htit += when[i]; - hTrkTPCQA[i] = new TH2F(hname,htit,30,0.,150.,50,0.,10.); - histosContainer->AddLast(hTrkTPCQA[i]); - hname = "hTrkVTXQA"; hname += i; - htit = "VTX KinkIndex vs nSigma "; htit += when[i]; - hTrkVTXQA[i] = new TH2F(hname,htit,21,-10.,10,50,0.,10.); - histosContainer->AddLast(hTrkVTXQA[i]); + fHname = "fHTrkITSQA"; fHname += i; + fHtit = "ITS nClust vs Chi2/nClust "; fHtit += when[i]; + fHTrkITSQA[i] = new TH2F(fHname,fHtit,20,0.,20.,50,0.,10.); + histosContainer->AddLast(fHTrkITSQA[i]); + fHname = "fHTrkTPCQA"; fHname += i; + fHtit = "TPC nClust vs Chi2/nClust "; fHtit += when[i]; + fHTrkTPCQA[i] = new TH2F(fHname,fHtit,30,0.,150.,50,0.,10.); + histosContainer->AddLast(fHTrkTPCQA[i]); + fHname = "fHTrkVTXQA"; fHname += i; + fHtit = "VTX KinkIndex vs nSigma "; fHtit += when[i]; + fHTrkVTXQA[i] = new TH2F(fHname,fHtit,21,-10.,10,50,0.,10.); + histosContainer->AddLast(fHTrkVTXQA[i]); } UInt_t nTypeTrigg = fMaker->NoOfTrigg(); UInt_t nTypeAssoc = fMaker->NoOfAssoc(); UInt_t nBinsCentr = fSelector->NoOfBins(centr); - UInt_t nBinsTrigg = fSelector->NumTriggPt(); - Float_t minTrigg = fSelector->MinTriggPt(); - Float_t maxTrigg = fSelector->MaxTriggPt(); - UInt_t nBinsAssoc = fSelector->NumAssocPt(); - Float_t minAssoc = fSelector->MinAssocPt(); - Float_t maxAssoc = fSelector->MaxAssocPt(); + UInt_t nBinsTrigg = fSelector->NoOfBins(trigg); + UInt_t nBinsAssoc = fSelector->NoOfBins(assoc); + Float_t minTrigg = fSelector->MinLowBin(trigg); + Float_t maxTrigg = fSelector->MaxHighBin(trigg); + Float_t minAssoc = fSelector->MinLowBin(assoc); + Float_t maxAssoc = fSelector->MaxHighBin(assoc); for(UInt_t ic=0; icAddLast(hTrkProx[it][ic]); + histosContainer->AddLast(fHTrkProx[it][ic]); } // loop over mixing type } // loop over centrality for(UInt_t tt=0; ttAddLast(hTriggAcc[tt]); + fHname = "fHTriggAcc"; fHname+=tt; + fHTriggAcc[tt] = new TH3F(fHname,fHname,62,0.,2*TMath::Pi(),20,-1.,1.,nBinsTrigg,minTrigg,maxTrigg); + histosContainer->AddLast(fHTriggAcc[tt]); } // loop over trigger types for(UInt_t ta=0; taAddLast(hAssocAcc[ta]); + fHname="fHAssocAcc"; fHname+=ta; + fHAssocAcc[ta] = new TH3F(fHname,fHname,62,0.,2*TMath::Pi(),20,-1.,1.,nBinsAssoc,minAssoc,maxAssoc); + histosContainer->AddLast(fHAssocAcc[ta]); } // loop over associated types } @@ -145,13 +154,12 @@ void AliJetCorrelWriter::CreateCorrelations(TList* histosContainer){ UInt_t nTypeCorrel = fMaker->NoOfCorrel(); UInt_t nBinsCentr = fSelector->NoOfBins(centr); UInt_t nBinsZVert = fSelector->NoOfBins(zvert); - UInt_t nBinsTrigg = fSelector->NumTriggPt(); - UInt_t nBinsAssoc = fSelector->NumAssocPt(); - Float_t maxAssoc = fSelector->MaxAssocPt(); + UInt_t nBinsTrigg = fSelector->NoOfBins(trigg); + UInt_t nBinsAssoc = fSelector->NoOfBins(assoc); + Float_t maxAssoc = fSelector->MaxHighBin(assoc); UInt_t kDPhiNumBins = fSelector->DPhiNumBins(); UInt_t kDEtaNumBins = fSelector->DEtaNumBins(); - UInt_t nPoutBins = UInt_t(TMath::Ceil(2.2*maxAssoc/bwPout)); // since |p_out|AddLast(ntuParent); @@ -161,17 +169,17 @@ void AliJetCorrelWriter::CreateCorrelations(TList* histosContainer){ for(UInt_t hiv=0; hivDescriptor(htc); htit+=":"; htit+=hic; htit+=hiv; htit+=hit; htit+=hia; - hname="hReal"; hname+=htc; hname+=hic; hname+=hiv; hname+=hit; hname+=hia; - hReal[htc][hic][hiv][hit][hia] = new TH3F(hname,htit, kDPhiNumBins,lr,ur, + fHtit = fMaker->Descriptor(htc); fHtit+=":"; fHtit+=hic; fHtit+=hiv; fHtit+=hit; fHtit+=hia; + fHname="fHReal"; fHname+=htc; fHname+=hic; fHname+=hiv; fHname+=hit; fHname+=hia; + fHReal[htc][hic][hiv][hit][hia] = new TH3F(fHname,fHtit, kDPhiNumBins,lr,ur, kDEtaNumBins,-2.,2., nPoutBins,-1.1*maxAssoc,1.1*maxAssoc); - histosContainer->AddLast(hReal[htc][hic][hiv][hit][hia]); - hname="hMix"; hname+=htc; hname+=hic; hname+=hiv; hname+=hit; hname+=hia; - hMix[htc][hic][hiv][hit][hia] = new TH3F(hname,htit, kDPhiNumBins,lr,ur, + histosContainer->AddLast(fHReal[htc][hic][hiv][hit][hia]); + fHname="fHMix"; fHname+=htc; fHname+=hic; fHname+=hiv; fHname+=hit; fHname+=hia; + fHMix[htc][hic][hiv][hit][hia] = new TH3F(fHname,fHtit, kDPhiNumBins,lr,ur, kDEtaNumBins,-2.,2., nPoutBins,-1.1*maxAssoc,1.1*maxAssoc); - histosContainer->AddLast(hMix[htc][hic][hiv][hit][hia]); + histosContainer->AddLast(fHMix[htc][hic][hiv][hit][hia]); } // loop over associated bins } // loop over trigger bins } // loop over vertex bins @@ -185,8 +193,8 @@ void AliJetCorrelWriter::CreateCorrelations(TList* histosContainer){ void AliJetCorrelWriter::FillGlobal(Float_t cent, Float_t zvert){ // some global event histos - hCentr->Fill(cent); - hZVert->Fill(zvert); + fHCentr->Fill(cent); + fHZVert->Fill(zvert); } void AliJetCorrelWriter::FillSingleHistos(UInt_t cBin, CorrelList_t * const TriggList, UInt_t tIdx, @@ -196,8 +204,8 @@ void AliJetCorrelWriter::FillSingleHistos(UInt_t cBin, CorrelList_t * const Trig CorrelListIter_t trigIter = TriggList->Head(); while(!trigIter.HasEnded()){ CorrelParticle_t *particle = trigIter.Data(); - hTriggPt[tIdx][cBin]->Fill(particle->Pt()); - if(fSelector->GenQA()) hTriggAcc[tIdx]->Fill(particle->Phi(),particle->Eta(),particle->Pt()); + fHTriggPt[tIdx][cBin]->Fill(particle->Pt()); + if(fSelector->GenQA()) fHTriggAcc[tIdx]->Fill(particle->Phi(),particle->Eta(),particle->Pt()); trigIter.Move(); } } @@ -205,8 +213,8 @@ void AliJetCorrelWriter::FillSingleHistos(UInt_t cBin, CorrelList_t * const Trig CorrelListIter_t assoIter = AssocList->Head(); while(!assoIter.HasEnded()){ CorrelParticle_t *particle = assoIter.Data(); - hAssocPt[aIdx][cBin]->Fill(particle->Pt()); - if(fSelector->GenQA()) hAssocAcc[aIdx]->Fill(particle->Phi(),particle->Eta(),particle->Pt()); + fHAssocPt[aIdx][cBin]->Fill(particle->Pt()); + if(fSelector->GenQA()) fHAssocAcc[aIdx]->Fill(particle->Phi(),particle->Eta(),particle->Pt()); assoIter.Move(); } } @@ -224,9 +232,9 @@ void AliJetCorrelWriter::FillTrackQA(AliESDtrack * const track, UInt_t idx){ UInt_t kinkIndex = track->GetKinkIndex(0); Float_t sigVtx = fSelector->GetSigmaToVertex(track); - hTrkITSQA[idx]->Fill(Float_t(nClusITS),chi2ITS); - hTrkTPCQA[idx]->Fill(Float_t(nClusTPC),chi2TPC); - hTrkVTXQA[idx]->Fill(Float_t(kinkIndex),sigVtx); + fHTrkITSQA[idx]->Fill(Float_t(nClusITS),chi2ITS); + fHTrkTPCQA[idx]->Fill(Float_t(nClusTPC),chi2TPC); + fHTrkVTXQA[idx]->Fill(Float_t(kinkIndex),sigVtx); } void AliJetCorrelWriter::FillParentNtuple(CorrelList_t * const ParentList){ @@ -260,12 +268,13 @@ void AliJetCorrelWriter::FillCorrelations(FillType_t fTyp, UInt_t iCorr, UInt_t Float_t ptt = Trigg->Pt(); Float_t phit = Trigg->Phi(); Float_t etat = Trigg->Eta(); - Int_t tBin = fSelector->TriggBin(ptt); + Int_t tBin = fSelector->GetBin(trigg,ptt); // associated information: Float_t pta = Assoc->Pt(); Float_t phia = Assoc->Phi(); Float_t etaa = Assoc->Eta(); - Int_t aBin = fSelector->AssocBin(pta); + Int_t aBin = fSelector->GetBin(assoc,pta); + // Short_t qprod= Trigg->Q()*Assoc->Q(); if(tBin<0 || aBin<0) return; // one of them is not in the required pT range if(fabs(ptt-pta)<1.e-6 && fabs(phit-phia)<1.e-6 && fabs(etat-etaa)<1.e-6) return; // don't auto-correlate @@ -278,7 +287,7 @@ void AliJetCorrelWriter::FillCorrelations(FillType_t fTyp, UInt_t iCorr, UInt_t {std::cerr<<"AliJetCorrelWriter::FillCorrelations: failed casting!"<Dist(trk2); if(fSelector->CloseTrackPair(pairDist)) return; // proximity cut - if(fSelector->GenQA()) hTrkProx[fTyp][cBin]->Fill(pairDist,ptt,pta); + if(fSelector->GenQA()) fHTrkProx[fTyp][cBin]->Fill(pairDist,ptt,pta); } // Fill correlation histograms: @@ -286,15 +295,15 @@ void AliJetCorrelWriter::FillCorrelations(FillType_t fTyp, UInt_t iCorr, UInt_t Float_t deta = etat-etaa; Float_t pout = pta*TMath::Sin(dphi); if(fTyp==real){ - hReal[iCorr][cBin][vBin][tBin][aBin]->Fill(dphi,deta,pout); + fHReal[iCorr][cBin][vBin][tBin][aBin]->Fill(dphi,deta,pout); fNumReal[iCorr][cBin]++; } else { - hMix[iCorr][cBin][vBin][tBin][aBin]->Fill(dphi,deta,pout); + fHMix[iCorr][cBin][vBin][tBin][aBin]->Fill(dphi,deta,pout); fNumMix[iCorr][cBin]++; } } -void AliJetCorrelWriter::ShowStats(){ +void AliJetCorrelWriter::ShowStats() const { // stats printout method UInt_t nTypeCorrel = fMaker->NoOfCorrel(); UInt_t nBinsCentr = fSelector->NoOfBins(centr); @@ -309,7 +318,7 @@ void AliJetCorrelWriter::ShowStats(){ } } -Float_t AliJetCorrelWriter::DeltaPhi(Float_t phi1, Float_t phi2){ +Float_t AliJetCorrelWriter::DeltaPhi(Float_t phi1, Float_t phi2) { // wrapps dphi in (-pi/3,5pi/3) Float_t kPi = TMath::Pi(); Float_t res = phi2-phi1; diff --git a/PWG4/JetCorrel/AliJetCorrelWriter.h b/PWG4/JetCorrel/AliJetCorrelWriter.h index cf997526f6f..d012c75e6aa 100644 --- a/PWG4/JetCorrel/AliJetCorrelWriter.h +++ b/PWG4/JetCorrel/AliJetCorrelWriter.h @@ -1,11 +1,12 @@ -#ifndef __ALIJETCORRELWRITER_H__ -#define __ALIJETCORRELWRITER_H__ +#ifndef ALIJETCORRELWRITER_H +#define ALIJETCORRELWRITER_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id: $ */ //______________________________________________________ // Class for output (histograms) definition and filling. +// Contains also the methods for calculation of correlation parameters. //-- Author: Paul Constantin #include "AliJetCorrelSelector.h" @@ -31,27 +32,27 @@ class AliJetCorrelWriter : public TObject { CorrelParticle_t * const Trigger, CorrelParticle_t * const Associated); Float_t DeltaPhi(Float_t phi1, Float_t phi2); - void ShowStats(); + void ShowStats() const; private: AliJetCorrelSelector *fSelector; // user selection object AliJetCorrelMaker *fMaker; // correlation maker object - TString hname, htit; // histos name&title + TString fHname, fHtit; // histos name&title Bool_t fRecoTrigg; // is trigger reconstructed TRandom2 fRndm; // random number generator UInt_t fNumReal[kMAXNUMCORREL][kMAXCENTBIN], fNumMix[kMAXNUMCORREL][kMAXCENTBIN]; // counters // Output Histograms - TH1F *hBinsCentr, *hBinsZVert, *hCentr, *hZVert; // binning histos - TH2F *hTrkITSQA[2], *hTrkTPCQA[2], *hTrkVTXQA[2]; // track QA histos - TH3F *hTrkProx[2][kMAXCENTBIN]; // distance at TPC entrance between tracks - TH3F *hTriggAcc[kMAXNUMCORREL]; // trigg PhixEta acceptance - TH3F *hAssocAcc[kMAXNUMCORREL]; // assoc PhixEta acceptance - TNtuple *ntuParent; // reconstructed parent ntuple - TH1F *hTriggPt[kMAXNUMCORREL][kMAXCENTBIN]; // trigg Pt - TH1F *hAssocPt[kMAXNUMCORREL][kMAXCENTBIN]; // assoc Pt - TH3F *hReal[kMAXNUMCORREL][kMAXCENTBIN][kMAXVERTBIN][kMAXTRIGBIN][kMAXASSOBIN]; // real DPhixDEtaxPout - TH3F *hMix[kMAXNUMCORREL][kMAXCENTBIN][kMAXVERTBIN][kMAXTRIGBIN][kMAXASSOBIN]; // mix DPhixDEtaxPout + TH1F *fHBinsCentr, *fHBinsZVert, *fHBinsTrigg, *fHBinsAssoc, *fHCentr, *fHZVert; // binning histos + TH2F *fHTrkITSQA[2], *fHTrkTPCQA[2], *fHTrkVTXQA[2]; // track QA histos + TH3F *fHTrkProx[2][kMAXCENTBIN]; // distance at TPC entrance between tracks + TH3F *fHTriggAcc[kMAXNUMCORREL]; // trigg PhixEta acceptance + TH3F *fHAssocAcc[kMAXNUMCORREL]; // assoc PhixEta acceptance + TNtuple *ntuParent; // reconstructed parent ntuple + TH1F *fHTriggPt[kMAXNUMCORREL][kMAXCENTBIN]; // trigg Pt + TH1F *fHAssocPt[kMAXNUMCORREL][kMAXCENTBIN]; // assoc Pt + TH3F *fHReal[kMAXNUMCORREL][kMAXCENTBIN][kMAXVERTBIN][kMAXTRIGBIN][kMAXASSOBIN]; // real DPhixDEtaxPout + TH3F *fHMix[kMAXNUMCORREL][kMAXCENTBIN][kMAXVERTBIN][kMAXTRIGBIN][kMAXASSOBIN]; // mix DPhixDEtaxPout // disable (make private) copy constructor and assignment operator: AliJetCorrelWriter(const AliJetCorrelWriter&); diff --git a/PWG4/JetCorrel/CorrelDefs.h b/PWG4/JetCorrel/CorrelDefs.h index 79143b0b5af..01fee28d8c6 100644 --- a/PWG4/JetCorrel/CorrelDefs.h +++ b/PWG4/JetCorrel/CorrelDefs.h @@ -42,14 +42,14 @@ enum FillType_t {real, mixed}; enum PoolType_t {triggs, assocs}; -enum BinType_t {centr, zvert}; +enum BinType_t {centr, zvert, trigg, assoc}; enum PartType_t {unknown, hadron, proton, kaon, pion, photon, electron, jet, dihadron, diphoton, dielectron, dijet}; const UInt_t kMAXNUMCORREL = 1; // Maximum no of correlations const UInt_t kMAXVERTBIN = 10; // Maximum no of vertex bins -const UInt_t kMAXCENTBIN = 2; // Maximum no of centrality bins +const UInt_t kMAXCENTBIN = 3; // Maximum no of centrality bins const UInt_t kMAXTRIGBIN = 10; // Maximum no of trigger bins -const UInt_t kMAXASSOBIN = 20; // Maximum no of associated bins +const UInt_t kMAXASSOBIN = 10; // Maximum no of associated bins #endif diff --git a/PWG4/JetCorrel/CorrelKFTrack.cxx b/PWG4/JetCorrel/CorrelKFTrack.cxx index cd98febbb6c..9c434751b0c 100644 --- a/PWG4/JetCorrel/CorrelKFTrack.cxx +++ b/PWG4/JetCorrel/CorrelKFTrack.cxx @@ -61,7 +61,7 @@ CorrelKFTrack_t* CorrelKFTrack_t::Copy(){ return copy; } -void CorrelKFTrack_t::Show(){ +void CorrelKFTrack_t::Show() const { // printout method std::cout<<" Electron pT="<(p1); CorrelKFTrack_t* e2 = dynamic_cast(p2); if(!e1 || !e2) {std::cerr<<"CorrelRecoParent_t::Reconstruct - failed particle casting"<GetPrimaryVertex())); + AliKFVertex primVtx(*(fjcESD->GetPrimaryVertex())); if(primVtx.GetNContributors()<=0) return kFALSE; - AliKFParticle::SetField(jcESD->GetMagneticField()); + AliKFParticle::SetField(fjcESD->GetMagneticField()); AliKFParticle* pKF1 = new AliKFParticle; AliKFParticle* pKF2 = new AliKFParticle; if(e1->Param()==NULL || e1->Covar()==NULL || e2->Param()==NULL || e2->Covar()==NULL) {std::cerr<<"CorrelRecoParent_t::Reconstruct - null parameter pointer"<SetCorrelTypes(sizeof(correlTypes)/sizeof(UInt_t),correlTypes); selector->SetBinningCentr(sizeof(centrBins)/sizeof(Float_t),centrBins); selector->SetBinningZvert(sizeof(zVertBins)/sizeof(Float_t),zVertBins); - selector->SetBinningTrigg(minTriggPt,maxTriggPt,bwTriggPt); - selector->SetBinningAssoc(minAssocPt,maxAssocPt,bwAssocPt); + selector->SetBinningTrigg(sizeof(triggBins)/sizeof(Float_t),triggBins); + selector->SetBinningAssoc(sizeof(assocBins)/sizeof(Float_t),assocBins); selector->SetTriggers(sizeof(sTrigg)/sizeof(TString),sTrigg); selector->SetITSRefit(itsRefit); selector->SetTPCRefit(tpcRefit);