X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliDAJetFinder.cxx;h=16685f22930191e0c6a0f8c5dd981c5de8cdc57f;hb=86f2216c9e28eee07c049f313105b2af9cf11bf6;hp=deb3b5c7e3b9faa55955635215113911bb124465;hpb=dd677561d23e0c8ae0415ed50a8c6191b3f378a3;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliDAJetFinder.cxx b/JETAN/AliDAJetFinder.cxx index deb3b5c7e3b..16685f22930 100644 --- a/JETAN/AliDAJetFinder.cxx +++ b/JETAN/AliDAJetFinder.cxx @@ -22,7 +22,7 @@ //----------------------------------------------------------------------------------- #include -#include +#include #include #include "AliJetReaderHeader.h" #include "AliJetReader.h" @@ -43,7 +43,8 @@ AliDAJetFinder::AliDAJetFinder(): fNloopMax(100), fBeta(0.1), fNclustMax(0), - fNin(0) + fNin(0), + fNeff(0) { // Constructor } @@ -60,17 +61,23 @@ void AliDAJetFinder::FindJets() // Find the jets in current event // Float_t betaStop=100.; - fDebug = fHeader->GetDebug(); + fDebug = fHeader->GetDebug(); Double_t dEtSum=0; Double_t *xData[2]; - TVectorD *vPx = new TVectorD(); - TVectorD *vPy = new TVectorD(); - TMatrixD *mPyx= new TMatrixD(); - TMatrixD *mY = new TMatrixD(); + TVectorD *vPx = new TVectorD(); + TVectorD *vPy = new TVectorD(); + TMatrixD *mPyx= new TMatrixD(); + TMatrixD *mY = new TMatrixD(); InitDetAnn(dEtSum,xData,vPx,vPy,mPyx,mY); - if (fNin < fNclustMax) return; - + if (fNin < fNclustMax){ + delete [] xData[0], delete [] xData[1]; + delete vPx; + delete vPy; + delete mPyx; + delete mY; + return; + } Int_t nc=1, nk; DoubleClusters(nc,nk,vPy,mY); do{ //loop over beta @@ -79,7 +86,9 @@ void AliDAJetFinder::FindJets() NumCl(nc,nk,vPy,mPyx,mY); }while((fBetaGetFixedCl() ? + fNclustMax = ((AliDAJetHeader*)fHeader)->GetFixedCl() ? ((AliDAJetHeader*)fHeader)->GetNclustMax() : TMath::Max((Int_t)TMath::Sqrt(fNin),5); + Float_t etaEff = ((AliDAJetHeader*)fHeader)->GetEtaEff(); TClonesArray *lvArray = fReader->GetMomentumArray(); Int_t nEntr = lvArray->GetEntries(); fNin=0; for (Int_t iEn=0; iEnGetCutFlag(iEn)==1) fNin++; - Double_t *xEta = new Double_t[fNin]; - Double_t *xPhi = new Double_t[fNin]; + + fNeff = ((AliDAJetHeader*)fHeader)->GetNeff(); + fNeff = TMath::Max(fNeff,fNin); + Double_t *xEta = new Double_t[fNeff]; + Double_t *xPhi = new Double_t[fNeff]; xData[0]=xEta; xData[1]=xPhi; - vPx->ResizeTo(fNin); + vPx->ResizeTo(fNeff); Int_t iIn=0; for (Int_t iEn=0; iEnGetCutFlag(iEn)==0) continue; @@ -118,17 +131,25 @@ void AliDAJetFinder::InitDetAnn(Double_t &dEtSum,Double_t **xData,TVectorD *vPx, dEtSum+=(*vPx)(iIn); iIn++; } - for (iIn=0; iInResizeTo(fNin,njdim); + mPyx->ResizeTo(fNeff,njdim); mY->ResizeTo(4,njdim); vPy->ResizeTo(njdim); mY->Zero();mPyx->Zero();vPy->Zero(); (*vPy)(0)=1; TMatrixDColumn(*mPyx,0)=1; Double_t ypos=0,xpos=0; - for (iIn=0; iInGetReaderHeader()->GetFiducialEtaMax(),pi}; @@ -183,7 +205,7 @@ void AliDAJetFinder::Annealing(Int_t nk,Double_t **xData, TVectorD *vPx, TVect do{ //recalculate conditional probabilities nloop++; - for (Int_t iIn=0; iIn= fNclustMax) growcl=false; //recalculate the nc distinct codevectors - TMatrixD *pyx = new TMatrixD(fNin,2*nc); + TMatrixD *pyx = new TMatrixD(fNeff,2*nc); TVectorD *py = new TVectorD(nk); TMatrixD *y1 = new TMatrixD(3,nk); for (Int_t iClust=0; iClust nk/2){ for (Int_t iClust=0; iClustZero(); mPyx->Zero(); vPy->Zero(); @@ -379,26 +406,32 @@ void AliDAJetFinder::EndDetAnn(Int_t &nk,Double_t **xData,Int_t *xx,Double_t etx } //----------------------------------------------------------------------------------- -void AliDAJetFinder::StoreJets(Int_t nk,Double_t **xData, Int_t *xx, TMatrixD *mY) +void AliDAJetFinder::StoreJets(Int_t nk, Double_t **xData, Int_t *xx, TMatrixD *mY) { //evaluate significant clusters properties const Double_t pi=TMath::Pi(); AliJetReaderHeader *rHeader=fReader->GetReaderHeader(); - Float_t dFiducialEta=rHeader->GetFiducialEtaMax()-rHeader->GetFiducialEtaMin(); - Double_t dMeanDist=TMath::Sqrt(2*dFiducialEta*pi/fNin); - Double_t *xEta = xData[0]; - Double_t *xPhi = xData[1]; + Float_t dFidEtaMax = rHeader->GetFiducialEtaMax(); + Float_t dFidEtaMin = rHeader->GetFiducialEtaMin(); + Float_t dFiducialEta= dFidEtaMax - dFidEtaMin; + Double_t *xEta = xData[0]; + Double_t *xPhi = xData[1]; + Int_t nEff = 0; + for (Int_t i=0; idFidEtaMin) nEff++; + Double_t dMeanDist=0.; + if (nEff > 0) + dMeanDist=TMath::Sqrt(2*dFiducialEta*pi/nEff); Bool_t *isJet = new Bool_t[nk]; Double_t *etNoBg= new Double_t[nk]; Double_t *dDeltaEta=new Double_t[nk]; Double_t *dDeltaPhi=new Double_t[nk]; Double_t *surf = new Double_t[nk]; Double_t *etDens= new Double_t[nk]; - for (Int_t iClust=0; iClustdFidEtaMax || xEta[iIn] dEtaMax) dEtaMax=xEta[iIn]; Double_t dPhi=xPhi[iIn]-(*mY)(1,iClust); @@ -415,12 +448,12 @@ void AliDAJetFinder::StoreJets(Int_t nk,Double_t **xData, Int_t *xx, TMatrixD if (((AliDAJetHeader*)fHeader)->GetSelJets()){ for (Int_t iClust=0; iClustdFidEtaMin){ Double_t etDensMed=0.; Double_t etDensSqr=0.; Int_t norm=0; for (Int_t iClust1=0; iClust1dFidEtaMin){ etDensMed+=etDens[iClust1]; etDensSqr+=TMath::Power(etDens[iClust1],2); norm++; @@ -450,15 +483,18 @@ void AliDAJetFinder::StoreJets(Int_t nk,Double_t **xData, Int_t *xx, TMatrixD } } } else { - for (Int_t iClust=0; iClustClassName(),"AliJetAODReader"); if (fromAod) refs = fReader->GetReferences();