From: gconesab Date: Mon, 8 Feb 2010 22:10:48 +0000 (+0000) Subject: update in jet correl X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=94d71f8691bcf9efc2b9895531eccfe22db7ffc5;p=u%2Fmrichter%2FAliRoot.git update in jet correl --- diff --git a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx index c2d4d38de26..024531962e8 100644 --- a/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx +++ b/PWG4/JetCorrel/AliAnalysisTaskJetCorrel.cxx @@ -84,6 +84,7 @@ void AliAnalysisTaskJetCorrel::UserExec(Option_t */*option*/){ fReader->SetEvent(fEVT); // get global event pars and apply global cuts + if(!fSelector->SelectedEvtTrigger(fEVT)) 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/AliJetCorrelReader.cxx b/PWG4/JetCorrel/AliJetCorrelReader.cxx index db584636b36..d4a18c1cdbc 100644 --- a/PWG4/JetCorrel/AliJetCorrelReader.cxx +++ b/PWG4/JetCorrel/AliJetCorrelReader.cxx @@ -62,9 +62,10 @@ Float_t AliJetCorrelReader::GetVertex(){ exit(-1); } if(IsESDEvt(fEVT)){ - Double_t v[3]; - ((AliESDEvent*)fEVT)->GetVertex()->GetXYZ(v); - return v[2]; + return ((AliESDEvent*)fEVT)->GetPrimaryVertex()->GetZ(); +// Double_t v[3]; +// ((AliESDEvent*)fEVT)->GetVertex()->GetXYZ(v); +// return v[2]; } else { return ((AliAODEvent*)fEVT)->GetVertex(0)->GetZ(); } diff --git a/PWG4/JetCorrel/AliJetCorrelSelector.cxx b/PWG4/JetCorrel/AliJetCorrelSelector.cxx index f95577a28e2..0c2f3d70c8f 100644 --- a/PWG4/JetCorrel/AliJetCorrelSelector.cxx +++ b/PWG4/JetCorrel/AliJetCorrelSelector.cxx @@ -27,10 +27,10 @@ using namespace JetCorrelHD; ClassImp(AliJetCorrelSelector) AliJetCorrelSelector::AliJetCorrelSelector() : - fNumCorrel(0), fPoolDepth(0), fCorrelType(NULL), fGenQA(kFALSE), + fGenQA(kFALSE), 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), fRejectKinkChild(kFALSE), - fMaxNsigmaVtx(0), fMaxITSChi2(0), fMaxTPCChi2(0), fMinNClusITS(0), fMinNClusTPC(0) { + fITSRefit(kFALSE), fTPCRefit(kFALSE), fTRDRefit(kFALSE), fRejectKinkChild(kFALSE), fMaxEta(0), + fMaxNsigmaVtx(0), fMaxTrkVtx(0), fMaxITSChi2(0), fMaxTPCChi2(0), fMinNClusITS(0), fMinNClusTPC(0), trkMinProx(0) { // (default) constructor fNumBins[centr] = 0; fBinning[centr] = NULL; fNumBins[zvert] = 0; fBinning[zvert] = NULL; @@ -40,6 +40,8 @@ AliJetCorrelSelector::~AliJetCorrelSelector(){ // destructor if(fCorrelType) delete [] fCorrelType; fNumCorrel = 0; + if(fEvtTriggs) delete [] fEvtTriggs; + nEvtTriggs = 0; if(fBinning[centr]) delete [] fBinning[centr]; fNumBins[centr] = 0; if(fBinning[zvert]) delete [] fBinning[zvert]; @@ -61,6 +63,22 @@ void AliJetCorrelSelector::SetCorrelTypes(UInt_t s, UInt_t * const v){ } } +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!"<"<"<Show(); t2->Show(); +Bool_t AliJetCorrelSelector::SelectedEvtTrigger(AliVEvent *fEVT){ + // matches the event trigger classes with the user trigger classes + if(fEVT->InheritsFrom("AliESDEvent")){ + const AliESDEvent *esd = (AliESDEvent*)fEVT; + TString trigClass = esd->GetFiredTriggerClasses(); + if(nEvtTriggs==1 && fEvtTriggs[0].Contains("ALL")) return kTRUE; + for(UInt_t k=0; ktrkMinProx) return kFALSE; return kTRUE; } Bool_t AliJetCorrelSelector::LowQualityTrack(AliESDtrack* track){ // selects low quality tracks + if(track->Eta()>fMaxEta) return kTRUE; UInt_t status = track->GetStatus(); if(fITSRefit && !(status & AliESDtrack::kITSrefit)) return kTRUE; if(fTPCRefit && !(status & AliESDtrack::kTPCrefit)) return kTRUE; - UInt_t nClusITS = track->GetITSclusters(0); +// UInt_t nClusITS = track->GetITSclusters(0); +// if(nClusITSGetITSchi2()/Float_t(nClusITS); +// if(chi2ITS<0 || chi2ITS>fMaxITSChi2) return kTRUE; + UInt_t nClusTPC = track->GetTPCclusters(0); // or track->GetTPCNcls() ? - if(nClusITSGetITSchi2()/Float_t(nClusITS); + Float_t chi2TPC=-1.; if(nClusTPC!=0) chi2TPC = track->GetTPCchi2()/Float_t(nClusTPC); - if(chi2ITS<0 || chi2ITS>fMaxITSChi2) return kTRUE; if(chi2TPC<0 || chi2TPC>fMaxTPCChi2) return kTRUE; if(fRejectKinkChild && track->GetKinkIndex(0)>0) return kTRUE; - if(GetSigmaToVertex(track)>fMaxNsigmaVtx) return kTRUE; +// Float_t sigTrkVtx = GetSigmaToVertex(track); +// if(sigTrkVtx<0 || sigTrkVtx>fMaxNsigmaVtx) return kTRUE; + // instead of track-vertex DCA sigma cut, apply value-cut: + Float_t b[2], bCov[3]; + track->GetImpactParameters(b,bCov); + if((b[0]*b[0]+b[1]*b[1])>(fMaxTrkVtx*fMaxTrkVtx)) return kTRUE; return kFALSE; } diff --git a/PWG4/JetCorrel/AliJetCorrelSelector.h b/PWG4/JetCorrel/AliJetCorrelSelector.h index 79b9121c6e7..d5cd8d4656d 100644 --- a/PWG4/JetCorrel/AliJetCorrelSelector.h +++ b/PWG4/JetCorrel/AliJetCorrelSelector.h @@ -44,20 +44,25 @@ namespace JetCorrelHD { 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 SetTriggers(UInt_t s, TString * const v); void SetITSRefit(Bool_t v) {fITSRefit=v;} void SetTPCRefit(Bool_t v) {fTPCRefit=v;} void SetTRDRefit(Bool_t v) {fTRDRefit=v;} + void SetMaxEta(Float_t v) {fMaxEta=v;} void SetMaxITSChi2(Float_t v) {fMaxITSChi2=v;} void SetMaxTPCChi2(Float_t v) {fMaxTPCChi2=v;} void SetMinNClusITS(UInt_t v) {fMinNClusITS=v;} void SetMinNClusTPC(UInt_t v) {fMinNClusTPC=v;} void SetMaxNsigmaVtx(Float_t v) {fMaxNsigmaVtx=v;} + void SetMaxTrkVtx(Float_t v) {fMaxTrkVtx=v;} void SetRejectKinkChild(Bool_t v) {fRejectKinkChild=v;} void SetQA(Bool_t v) {fGenQA=v;} + void SetTrkProximityCut(Float_t v) {trkMinProx=v;} // Cutting methods: Bool_t IsAssoc(Float_t pT) {return (pT>=minAssocPt && pT<=maxAssocPt);} Bool_t IsTrigg(Float_t pT) {return (pT>=minTriggPt && pT<=maxTriggPt);} - Bool_t GoodTrackPair(CorrelTrack_t* t1, CorrelTrack_t* t2); + Bool_t SelectedEvtTrigger(AliVEvent * const fEVT); + Bool_t CloseTrackPair(Float_t dist); Bool_t LowQualityTrack(AliESDtrack* t); Bool_t PassPID(AliESDtrack* t, PartType_t pType); Float_t GetSigmaToVertex(AliESDtrack* trk); @@ -65,18 +70,22 @@ namespace JetCorrelHD { private: // Generic Selections: - UInt_t fNumCorrel, fPoolDepth; // number of correlations, pool depth + Bool_t fGenQA; // generate QA 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 - Bool_t fGenQA; // generate QA histos Float_t minTriggPt, maxTriggPt, bwTriggPt; // trigg Pt binning Float_t minAssocPt, maxAssocPt, bwAssocPt; // assoc Pt binning // Track Selections: Bool_t fITSRefit, fTPCRefit, fTRDRefit, fRejectKinkChild; // on/off cuts - Float_t fMaxNsigmaVtx; - Float_t fMaxITSChi2, fMaxTPCChi2; - UInt_t fMinNClusITS, fMinNClusTPC; + Float_t fMaxEta; // single-particle eta cut + Float_t fMaxNsigmaVtx; // track-primary vertex cut (sigma) + 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) // disable (make private) copy constructor, and assignment operator: AliJetCorrelSelector(const AliJetCorrelSelector&); diff --git a/PWG4/JetCorrel/AliJetCorrelWriter.cxx b/PWG4/JetCorrel/AliJetCorrelWriter.cxx index b0832f63c65..c4e70e4ba95 100644 --- a/PWG4/JetCorrel/AliJetCorrelWriter.cxx +++ b/PWG4/JetCorrel/AliJetCorrelWriter.cxx @@ -238,14 +238,16 @@ void AliJetCorrelWriter::FillCorrelations(FillType_t fTyp, UInt_t iCorr, UInt_t if(fabs(ptt-pta)GenQA()) - if(Trigg->ID()==hadron && Assoc->ID()==hadron){ - CorrelTrack_t* trk1 = dynamic_cast(Trigg); - CorrelTrack_t* trk2 = dynamic_cast(Assoc); - if(!trk1 || !trk2) - {std::cerr<<"AliJetCorrelWriter::FillCorrelations: failed casting!"<Fill(trk1->Dist(trk2),ptt,pta); - } + if(Trigg->ID()==hadron && Assoc->ID()==hadron){ + CorrelTrack_t* trk1 = dynamic_cast(Trigg); + CorrelTrack_t* trk2 = dynamic_cast(Assoc); + if(!trk1 || !trk2) + {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); + } + // Fill correlation histograms: Float_t dphi = DeltaPhi(phit,phia); Float_t deta = etat-etaa; diff --git a/PWG4/macros/AddTaskJetCorrel.C b/PWG4/macros/AddTaskJetCorrel.C index 3789a2ea5e3..3f1d95499ed 100644 --- a/PWG4/macros/AddTaskJetCorrel.C +++ b/PWG4/macros/AddTaskJetCorrel.C @@ -17,7 +17,7 @@ AliAnalysisTaskJetCorrel *AddTaskJetCorrel(){ using namespace JetCorrelHD; gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/ConfigJetCorrel.C"); - AliJetCorrelSelector* Selector = JetCorrelSelector(); + AliJetCorrelSelector* Selector = ConfigJetCorrel(); AliAnalysisTaskJetCorrel *task = new AliAnalysisTaskJetCorrel(Selector); //add the task to the current analysis manager @@ -27,9 +27,12 @@ AliAnalysisTaskJetCorrel *AddTaskJetCorrel(){ //---------------------- AliAnalysisDataContainer *output = mgr->CreateContainer("JetCorrelHistos", TList::Class(), - AliAnalysisManager::kOutputContainer,"JetCorrelHistos.root"); + AliAnalysisManager::kOutputContainer,"JetCorrelHistos.root"); + AliAnalysisDataContainer *dummy = mgr->CreateContainer("cdummy", TTree::Class(), + AliAnalysisManager::kExchangeContainer); + mgr->ConnectInput(task,0,mgr->GetCommonInputContainer()); - mgr->ConnectOutput(task,0,mgr->GetCommonOutputContainer()); + mgr->ConnectOutput(task,0,dummy); mgr->ConnectOutput(task,1,output); return task; diff --git a/PWG4/macros/ConfigJetCorrel.C b/PWG4/macros/ConfigJetCorrel.C index d0aee6e1f83..ef0de230609 100644 --- a/PWG4/macros/ConfigJetCorrel.C +++ b/PWG4/macros/ConfigJetCorrel.C @@ -1,43 +1,58 @@ -AliJetCorrelSelector* JetCorrelSelector(){ +AliJetCorrelSelector* ConfigJetCorrel(){ /////////////////////////////////// // set correlation input parameters /////////////////////////////////// // set generic selections: - UInt_t PoolDepth = 10; - UInt_t CorrelTypes[] = {0}; - Float_t TriggBins[] = {5.,7.,10.,15.,25.}; - Float_t AssocBins[] = {0.3,0.5,1.,2.,5.,7.}; - Float_t CentrBins[] = {0.,50.,200.,500.}; - Float_t ZVertBins[] = {-30.,-15.,-5.,-1.,1.,5.,15.,30.}; + Bool_t kUseQA = kTRUE; // generate QA histos + UInt_t poolDepth = 100; + UInt_t correlTypes[] = {0}; // 0=dihadron, 1=pi0-hadron, 2=photon-hadron, 3=Z0-hadron + Float_t centrBins[] = {1,30,300}; + Float_t zVertBins[] = {-12,-8,-5,-3,-1,1,3,5,8,12}; + Float_t bwTriggPt = 1; Float_t minTriggPt = 2; Float_t maxTriggPt = 20; // 18 bins + Float_t bwAssocPt = 0.5; Float_t minAssocPt = 0.5; Float_t maxAssocPt = 10; // 19 bins + //TString sTrigg[] = {"ALL"}; // selects events where one of the strings is matched; "ALL"=no cut + TString sTrigg[] = {"CINT1B-"}; // set track selections: - Bool_t ITSRefit = kTRUE; - Bool_t TPCRefit = kTRUE; - Bool_t TRDRefit = kTRUE; // used only for electron tracks - UInt_t MinNClusITS = 1; - UInt_t MinNClusTPC = 50; - Float_t MaxITSChi2 = 3.5; // max track Chi2 per ITS cluster - Float_t MaxTPCChi2 = 3.5; // max track Chi2 per TPC cluster - Float_t MaxNsigVtx = 3.5; // max dist to primary vertex - Bool_t RejectKinkChild = kTRUE; // reject track comming from a kink + Bool_t itsRefit = kTRUE; + Bool_t tpcRefit = kTRUE; + Bool_t trdRefit = kTRUE; // used only for electron tracks + Float_t maxEta = 0.9; + UInt_t minNClusTPC = 80; + Float_t maxTPCChi2 = 3.5; // max track Chi2 per TPC cluster + Bool_t rejectKinkChild = kTRUE; // reject track comming from a kink + Float_t trkPairCut = 0.; // track pair proximity cut (dist at TPC entrance) + // code that applies next 3 cuts (NClusITS,ITSChi2,NsigVtx) currently commented out + UInt_t minNClusITS = 0; + Float_t maxITSChi2 = 35; // max track Chi2 per ITS cluster + Float_t maxNsigVtx = 35; // max dist to primary vertex (sigma) + Float_t maxTrkVtx = 3; // max dist to primary vertex (absolute) - temporarily instead of sigma ////////////////////////////////// // load them into selector object: ////////////////////////////////// - AliJetCorrelSelector* Selector = new AliJetCorrelSelector(); - Selector->SetPoolDepth(PoolDepth); - Selector->SetCorrelTypes(sizeof(CorrelTypes)/sizeof(Int_t),CorrelTypes); - Selector->SetBinningTrigg(sizeof(TriggBins)/sizeof(Float_t),TriggBins); - Selector->SetBinningAssoc(sizeof(AssocBins)/sizeof(Float_t),AssocBins); - Selector->SetBinningCentr(sizeof(CentrBins)/sizeof(Float_t),CentrBins); - Selector->SetBinningZvert(sizeof(ZVertBins)/sizeof(Float_t),ZVertBins); - Selector->SetITSRefit(ITSRefit); Selector->SetTPCRefit(TPCRefit); - Selector->SetTRDRefit(TRDRefit); - Selector->SetMinNClusITS(MinNClusITS); Selector->SetMinNClusTPC(MinNClusTPC); - Selector->SetMaxITSChi2(MaxITSChi2); Selector->SetMaxTPCChi2(MaxTPCChi2); - Selector->SetMaxNsigmaVtx(MaxNsigVtx); - Selector->SetRejectKinkChild(RejectKinkChild); - Selector->Print(); + AliJetCorrelSelector* selector = new AliJetCorrelSelector(); + selector->SetQA(kUseQA); + selector->SetPoolDepth(poolDepth); + selector->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->SetTriggers(sizeof(sTrigg)/sizeof(TString),sTrigg); + selector->SetITSRefit(itsRefit); + selector->SetTPCRefit(tpcRefit); + selector->SetTRDRefit(trdRefit); + selector->SetMaxEta(maxEta); + selector->SetMinNClusITS(minNClusITS); + selector->SetMinNClusTPC(minNClusTPC); + selector->SetMaxITSChi2(maxITSChi2); + selector->SetMaxTPCChi2(maxTPCChi2); + selector->SetMaxNsigmaVtx(maxNsigVtx); + selector->SetMaxTrkVtx(maxTrkVtx); + selector->SetRejectKinkChild(rejectKinkChild); + selector->SetTrkProximityCut(trkPairCut); + selector->Show(); - return Selector; + return selector; }