X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenHBTosl.cxx;h=7d763d215903175dbb3a9c74580e58f3778ce40b;hb=03b8642457d03f04807123de8f0d3052330033e1;hp=bac48365faced91df07738e7a5867c1181c3ac57;hpb=f84379e8c8e79541c02a59e533676dc97db3b404;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenHBTosl.cxx b/EVGEN/AliGenHBTosl.cxx index bac48365fac..7d763d21590 100644 --- a/EVGEN/AliGenHBTosl.cxx +++ b/EVGEN/AliGenHBTosl.cxx @@ -1,4 +1,23 @@ +/************************************************************************** + * 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. * + **************************************************************************/ + +/* $Id$ */ + #include "AliGenHBTosl.h" +#include "AliLog.h" + //__________________________________________________________ ///////////////////////////////////////////////////////////// // // @@ -48,7 +67,6 @@ // // //////////////////////////////////////////////////////////// -#include #include @@ -67,7 +85,12 @@ #include "AliGenGeVSim.h" #include "AliGenHIJINGpara.h" + /***********************************************************/ +using std::cout; +using std::endl; +using std::ofstream; +using std::ios; ClassImp(AliGenHBTosl) AliGenHBTosl::AliGenHBTosl(): @@ -78,13 +101,15 @@ AliGenHBTosl::AliGenHBTosl(): fQBackground(0x0), fQSecondSignal(0x0), fQSecondBackground(0x0), - fQRange(0.15), + fQRange(0.06), fQNBins(60), fGenerator(0x0), + fStackBuffer(0), fBufferSize(5), - fNBinsToScale(Int_t(fQNBins*0.2)), + fNBinsToScale(Int_t(fQNBins*0.1)), fDebug(0), - fMaxIterations(300), + fSignalShapeCreated(0), + fMaxIterations(1000), fMaxChiSquereChange(0.01), fMaxChiSquerePerNDF(1.5), fQRadius(8.0), @@ -92,7 +117,9 @@ AliGenHBTosl::AliGenHBTosl(): fSamplePhiMin(-0.01), fSamplePhiMax(TMath::TwoPi()+0.01), fSignalRegion(0.0), - fMinFill(300) + fMinFill(1000), + fSwapped(0), + fLogFile(0x0) { //default constructor } @@ -106,14 +133,15 @@ AliGenHBTosl::AliGenHBTosl(Int_t n, Int_t pid): fQBackground(0x0), fQSecondSignal(0x0), fQSecondBackground(0x0), - fQRange(0.15), + fQRange(0.06), fQNBins(60), fGenerator(0x0), + fStackBuffer(0), fBufferSize(5), - fNBinsToScale(Int_t(fQNBins*0.2)), + fNBinsToScale(Int_t(fQNBins*0.1)), fDebug(0), fSignalShapeCreated(kFALSE), - fMaxIterations(300), + fMaxIterations(1000), fMaxChiSquereChange(0.01), fMaxChiSquerePerNDF(1.5), fQRadius(8.0), @@ -121,10 +149,44 @@ AliGenHBTosl::AliGenHBTosl(Int_t n, Int_t pid): fSamplePhiMin(-0.01), fSamplePhiMax(TMath::TwoPi()+0.01), fSignalRegion(0.0), - fMinFill(300) + fMinFill(1000), + fSwapped(0), + fLogFile(0x0) { //default constructor } + +AliGenHBTosl::AliGenHBTosl(const AliGenHBTosl & hbt): + AliGenerator(-1), + fQCoarseBackground(0x0), + fQCoarseSignal(0x0), + fQSignal(0x0), + fQBackground(0x0), + fQSecondSignal(0x0), + fQSecondBackground(0x0), + fQRange(0.06), + fQNBins(60), + fGenerator(0x0), + fStackBuffer(0), + fBufferSize(5), + fNBinsToScale(Int_t(fQNBins*0.1)), + fDebug(0), + fSignalShapeCreated(kFALSE), + fMaxIterations(1000), + fMaxChiSquereChange(0.01), + fMaxChiSquerePerNDF(1.5), + fQRadius(8.0), + fPID(kPiPlus), + fSamplePhiMin(-0.01), + fSamplePhiMax(TMath::TwoPi()+0.01), + fSignalRegion(0.0), + fMinFill(1000), + fSwapped(0), + fLogFile(0x0) +{ +// Copy constructor + hbt.Copy(*this); +} /***********************************************************/ AliGenHBTosl::~AliGenHBTosl() @@ -137,8 +199,9 @@ AliGenHBTosl::~AliGenHBTosl() delete fGenerator; delete fQSecondSignal; delete fQSecondBackground; - + delete fLogFile; } +/***********************************************************/ void AliGenHBTosl::Init() { @@ -175,36 +238,44 @@ void AliGenHBTosl::Init() */ fGenerator->SetOrigin(fOrigin[0],fOrigin[1],fOrigin[2]); - static const Double_t degtoradcf = 180./TMath::Pi(); + static const Double_t kDegToRadCF = 180./TMath::Pi(); fGenerator->SetMomentumRange(fPtMin,fPtMax); - fGenerator->SetPhiRange(degtoradcf*fPhiMin,degtoradcf*fPhiMax); + fGenerator->SetPhiRange(kDegToRadCF*fPhiMin,kDegToRadCF*fPhiMax); fGenerator->SetYRange(fYMin,fYMax); - fGenerator->SetThetaRange(degtoradcf*fThetaMin,degtoradcf*fThetaMax); + fGenerator->SetThetaRange(kDegToRadCF*fThetaMin,kDegToRadCF*fThetaMax); fGenerator->Init(); } - fQCoarseBackground = new TH3D("fQCoarseBackground","",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); - fQCoarseSignal = new TH3D("fQCoarseSignal","fQCoarseSignal",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); +// fQCoarseBackground = new TH3D("fQCoarseBackground","",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); +// fQCoarseSignal = new TH3D("fQCoarseSignal","fQCoarseSignal",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); +// fQCoarseBackground->Sumw2(); +// fQCoarseSignal->Sumw2(); + fQSignal = new TH3D("fQSignal1","fQSignal",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); fQBackground = new TH3D("fQBackground1","fQBackground",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); fQSecondSignal = new TH3D("fQSignal2","fQSignal",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); fQSecondBackground = new TH3D("fQBackground2","fQBackground",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); - fQCoarseBackground->Sumw2(); - fQCoarseSignal->Sumw2(); fQSignal->Sumw2(); fQBackground->Sumw2(); fQSecondSignal->Sumw2(); fQSecondBackground->Sumw2(); + + fLogFile = new ofstream("BadEvent",ios::out); + } /***********************************************************/ void AliGenHBTosl::Generate() { //the main method - Info("Generate","Attempts to generate %d particles.",fNpart); + + ofstream& logfile = *fLogFile; + logfile<<"Generate"<<"Attempts to generate "<Sumw2(); + FillCoarse(); //create coarse background - just to know the spectrum } + + fQCoarseSignal = new TH3D("fQCoarseSignal","fQCoarseSignal",fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange, fQNBins,-fQRange,fQRange); + fQCoarseSignal->Sumw2(); FillCoarseSignal();//create first coarse signal by brutal multplication coarse background and required function shape } @@ -300,7 +377,7 @@ void AliGenHBTosl::Generate() } fGenerator->Generate(); - Int_t j = 0, ntr = 0; + Int_t ntr = 0; if ( genstack->GetNtrack() < fNpart/2) { Warning("Generate","************************************************************"); @@ -310,7 +387,8 @@ void AliGenHBTosl::Generate() } TH3D* work = new TH3D("work","work",fQNBins,-fQRange,fQRange,fQNBins,-fQRange,fQRange,fQNBins,-fQRange,fQRange); - + work->SetDirectory(0x0); + work->Sumw2(); Double_t*** chiarray = new Double_t** [fQNBins+1]; Double_t*** sigarray = new Double_t** [fQNBins+1]; @@ -349,20 +427,35 @@ void AliGenHBTosl::Generate() } } } - - printf("\n"); + + char msg[1000]; + logfile<GetXaxis()->GetBinCenter(30); + Double_t ty = work->GetYaxis()->GetBinCenter(30); + Double_t tz = work->GetZaxis()->GetBinCenter(k); + snprintf(msg,1000, "% 6.5f ",GetQOutQSideQLongCorrTheorValue(tx,ty,tz)); + logfile<GetBinContent(1,1,k)); + snprintf(msg,1000, "% 6.5f ",work->GetBinContent(30,30,k)); + logfile<GetZaxis()->GetBinCenter(zmax); - qside = work->GetYaxis()->GetBinCenter(ymax); - qout = work->GetXaxis()->GetBinCenter(xmax); + Double_t qlongc = work->GetZaxis()->GetBinCenter(zmax); + Double_t qsidec = work->GetYaxis()->GetBinCenter(ymax); + Double_t qoutc = work->GetXaxis()->GetBinCenter(xmax); - Info("Generate","Fill bin (%d,%d,%d)",xmax,ymax,zmax); + + snprintf(msg,1000, "Generate Fill bin chi2(%d,%d,%d)=%f",xmax,ymax,zmax,chiarray[xmax][ymax][zmax]); + logfile<Uniform(qout-binwdh,qout+binwdh); - qside = gRandom->Uniform(qside-binwdh,qside+binwdh); - qlong = gRandom->Uniform(qlong-binwdh,qlong+binwdh); + qout = gRandom->Uniform(qoutc -binwdh, qoutc +binwdh); + qside = gRandom->Uniform(qsidec-binwdh, qsidec+binwdh); + qlong = gRandom->Uniform(qlongc-binwdh, qlongc+binwdh); TParticle* first = 0; - while (j < genstack->GetNtrack()) + Int_t jj = 0; + + while (jj < genstack->GetNtrack()) { - TParticle* tmpp = genstack->Particle(j++); + TParticle* tmpp = genstack->Particle(jj++); if (tmpp->GetPdgCode() == fPID) { if (CheckParticle(tmpp,0x0,stack) == kFALSE) @@ -484,7 +581,7 @@ void AliGenHBTosl::Generate() SetTrack(first,etmp,stack); SetTrack(second,etmp,stack); - Double_t y = GetQOutQSideQLongCorrTheorValue(qout,qside,qlong); + Double_t y = GetQOutQSideQLongCorrTheorValue(qoutc,qsidec,qlongc); sigarray[xmax][ymax][zmax] ++; chiarray[xmax][ymax][zmax] = scale*sigarray[xmax][ymax][zmax]/fQBackground->GetBinContent(xmax,ymax,zmax); @@ -494,7 +591,9 @@ void AliGenHBTosl::Generate() Mix(fStackBuffer,fQBackground,fQSecondSignal); //upgrate background Mix(stack,fQSignal,fQSecondBackground); //upgrate signal - + + delete work; + for (Int_t i = 1; i<=fQNBins; i++) { for (Int_t k = 1; k<=fQNBins; k++) @@ -553,7 +652,7 @@ void AliGenHBTosl::GetOneD(TParticle* first, TParticle* second,Double_t qinv) // TParticle(pdg, is, parent, -1, kFirstDaughter, kLastDaughter, // px, py, pz, e, vx, vy, vz, tof); - if (GetDebug()) Info("GetOneD","Randomized qinv = %f, obtained = %f",qinv,GetQInv(first,second)); + AliDebug(1,Form("Randomized qinv = %f, obtained = %f",qinv,GetQInv(first,second))); } /***********************************************************/ @@ -677,7 +776,7 @@ Int_t AliGenHBTosl::GetThreeD(TParticle* first,TParticle* second, Double_t qout, second->SetMomentum(vector.X(),vector.Y(),vector.Z(),e); //////////// - if ( GetDebug() > 3 ) + if ( AliDebugLevel() > 3 ) { e=TMath::Sqrt(m2+px*px); TParticle* f = new TParticle(first->GetPdgCode(),0,-1,-1,-1,-1, px , 0.0, 0.0, e,0.0,0.0,0.0,0.0); @@ -706,6 +805,14 @@ Int_t AliGenHBTosl::GetThreeD(TParticle* first,TParticle* second, Double_t qout, void AliGenHBTosl::StartSignal() { //Starts the signal histograms + ofstream& logfile = *fLogFile; + logfile<<"\n\n\n\n"; + logfile<<"************************************************"<Reset(); } - const Double_t ndf = fQNBins*fQNBins*fQNBins; + StartSignalPass1(); + //We alread have detailed histograms and we do not need Coarse anymore + delete fQCoarseSignal; + delete fQCoarseBackground; + fQCoarseSignal = 0x0; + fQCoarseBackground = 0x0; + + + const Double_t kNDF = fQNBins*fQNBins*fQNBins; TH3D* work = new TH3D("work","work",fQNBins,-fQRange,fQRange,fQNBins,-fQRange,fQRange,fQNBins,-fQRange,fQRange); work->Sumw2(); @@ -767,7 +882,6 @@ void AliGenHBTosl::StartSignal() Bool_t shortloop = kTRUE; TCanvas* c1 = new TCanvas(); - StartSignalPass1(); printf("\n"); Info("StartSignal","\n\n\n\nSecond Pass\n\n\n\n"); @@ -775,8 +889,8 @@ void AliGenHBTosl::StartSignal() while ( ( (chisqrPerDF > fMaxChiSquereChange) || flag) && (niterations++ < fMaxIterations) ) { - printf("StartSignal\n"); - printf(" Row 1 Theory, 2 current value, 3 Chi2 \n"); + logfile<<"StartSignal\n"; + logfile<<" Row 1 Theory, 2 current value, 3 Chi2 \n"; Double_t chisqrnew = 0.0; flag = kFALSE; @@ -788,21 +902,21 @@ void AliGenHBTosl::StartSignal() { c1->cd(); char buff[50]; - sprintf(buff,"QTWorkPass2.%3d.root",counter); + snprintf(buff,50, "QTWorkPass2.%3d.root",counter); TFile* file = TFile::Open(buff,"update"); work->Write(); work->SetDirectory(0x0); file->Close(); delete file; - sprintf(buff,"QTBackgroundPass2.%3d.root",counter); + snprintf(buff,50, "QTBackgroundPass2.%3d.root",counter); file = TFile::Open(buff,"update"); fQBackground->Write(); fQBackground->SetDirectory(0x0); file->Close(); delete file; - sprintf(buff,"QTSignalPass2.%3d.root",counter); + snprintf(buff,50, "QTSignalPass2.%3d.root",counter); file = TFile::Open(buff,"update"); fQSignal->Write(); fQSignal->SetDirectory(0x0); @@ -841,36 +955,41 @@ void AliGenHBTosl::StartSignal() } - printf("\n"); + char msg[1000]; - for (Int_t k = 1; k < 11; k++) + printf("\n"); + + for (Int_t k = 25; k < 36; k++) { - Double_t tx = work->GetXaxis()->GetBinCenter(1); - Double_t ty = work->GetYaxis()->GetBinCenter(1); + Double_t tx = work->GetXaxis()->GetBinCenter(30); + Double_t ty = work->GetYaxis()->GetBinCenter(30); Double_t tz = work->GetZaxis()->GetBinCenter(k); - printf("% 6.5f ",GetQOutQSideQLongCorrTheorValue(tx,ty,tz)); + snprintf(msg,1000, "% 6.5f ",GetQOutQSideQLongCorrTheorValue(tx,ty,tz)); + logfile<GetBinContent(1,1,k)); + snprintf(msg, 1000, "%6.5f ",work->GetBinContent(30,30,k)); + logfile< 20) break; - cout<GetBinContent(1,1,1) - <<" "<GetBinContent(1,1,2) - <<" "<GetBinContent(1,1,3) - <<" "<GetBinContent(1,1,4) - <<" "<GetBinContent(1,1,5) + cout<GetBinContent(30,30,28) + <<" "<GetBinContent(30,30,29) + <<" "<GetBinContent(30,30,30) + <<" "<GetBinContent(30,30,31) + <<" "<GetBinContent(30,30,32) <<"\n"; fflush(0); @@ -1449,7 +1569,7 @@ void AliGenHBTosl::GetQOutQSideQLong(TParticle* f, TParticle* s,Double_t& out, } Double_t beta = pzsum/esum; - Double_t gamma = 1.0/TMath::Sqrt(1.0 - beta*beta); + Double_t gamma = 1.0/TMath::Sqrt((1.-beta)*(1.+beta)); lon = gamma * ( pzdiff - beta*ediff ); @@ -1465,22 +1585,22 @@ Double_t AliGenHBTosl::Scale(TH3D* num, TH3D* den) //Calculates the factor that should be used to scale //quatience of num and den to 1 at tail - if (GetDebug()) Info("Scale","Entered Scale()"); + AliDebug(1,"Entered"); if(!num) { - Error("Scale","No numerator"); + AliError("No numerator"); return 0.0; } if(!den) { - Error("Scale","No denominator"); + AliError("No denominator"); return 0.0; } if(fNBinsToScale < 1) { + AliError("Number of bins for scaling is smaller than 1"); return 0.0; - Error("Scale","Number of bins for scaling is smaller thnan 1"); } Int_t fNBinsToScaleX = fNBinsToScale; Int_t fNBinsToScaleY = fNBinsToScale; @@ -1489,25 +1609,25 @@ Double_t AliGenHBTosl::Scale(TH3D* num, TH3D* den) Int_t nbinsX = num->GetNbinsX(); if (fNBinsToScaleX > nbinsX) { - Error("Scale","Number of X bins for scaling is bigger thnan number of bins in histograms"); + AliError("Number of X bins for scaling is bigger thnan number of bins in histograms"); return 0.0; } Int_t nbinsY = num->GetNbinsX(); if (fNBinsToScaleY > nbinsY) { - Error("Scale","Number of Y bins for scaling is bigger thnan number of bins in histograms"); + AliError("Number of Y bins for scaling is bigger thnan number of bins in histograms"); return 0.0; } Int_t nbinsZ = num->GetNbinsZ(); if (fNBinsToScaleZ > nbinsZ) { - Error("Scale","Number of Z bins for scaling is bigger thnan number of bins in histograms"); + AliError("Number of Z bins for scaling is bigger thnan number of bins in histograms"); return 0.0; } - if (GetDebug()>0) Info("Scale","No errors detected"); + AliDebug(1,"No errors detected"); Int_t offsetX = nbinsX - fNBinsToScaleX - 1; //bin that we start loop over bins in axis X Int_t offsetY = nbinsY - fNBinsToScaleY - 1; //bin that we start loop over bins in axis Y @@ -1528,14 +1648,13 @@ Double_t AliGenHBTosl::Scale(TH3D* num, TH3D* den) } } - if(GetDebug() > 0) - Info("Scale","numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d", - numsum,densum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ); + AliDebug(1,Form("numsum=%f densum=%f fNBinsToScaleX=%d fNBinsToScaleY=%d fNBinsToScaleZ=%d", + numsum,densum,fNBinsToScaleX,fNBinsToScaleY,fNBinsToScaleZ)); if (numsum == 0) return 0.0; Double_t ret = densum/numsum; - if(GetDebug() > 0) Info("Scale","returning %f",ret); + AliDebug(1,Form("returning %f",ret)); return ret; } @@ -1595,7 +1714,7 @@ void AliGenHBTosl::TestCoarseSignal() } /***********************************************************/ -void AliGenHBTosl::SetTrack(TParticle* p, Int_t& ntr) +void AliGenHBTosl::SetTrack(TParticle* p, Int_t& ntr) { //Shortcut to PushTrack(bla,bla,bla,bla.............) if (p->P() == 0.0) @@ -1628,7 +1747,7 @@ void AliGenHBTosl::SetTrack(TParticle* p, Int_t& ntr) } /***********************************************************/ -void AliGenHBTosl::SetTrack(TParticle* p, Int_t& ntr, AliStack* stack) +void AliGenHBTosl::SetTrack(TParticle* p, Int_t& ntr, AliStack* stack) const { //Shortcut to SetTrack(bla,bla,bla,bla.............) if (p->P() == 0.0) @@ -1654,7 +1773,7 @@ void AliGenHBTosl::Rotate(TVector3& relvector, TVector3& vector) //In other words: To make equations easier static TVector3 first; - if (GetDebug()) + if (AliDebugLevel()>=1) { first.SetXYZ(relvector.x(),relvector.y(),relvector.z()); } @@ -1671,14 +1790,14 @@ void AliGenHBTosl::Rotate(TVector3& relvector, TVector3& vector) vector.RotateY(rotAngleY); vector.RotateZ(rotAngleZ); - if (GetDebug()>5) + if (AliDebugLevel()>5) { TVector3 test(firstPx,0.0,0.0); test.RotateY(rotAngleY); test.RotateZ(rotAngleZ); - ::Info("Rotate","Rotation test: px %f %f",first.x(),test.x()); - ::Info("Rotate","Rotation test: py %f %f",first.y(),test.y()); - ::Info("Rotate","Rotation test: pz %f %f",first.z(),test.z()); + AliInfo(Form("Rotation test: px %f %f",first.x(),test.x())); + AliInfo(Form("Rotation test: py %f %f",first.y(),test.y())); + AliInfo(Form("Rotation test: pz %f %f",first.z(),test.z())); } } /***********************************************************/ @@ -1697,11 +1816,13 @@ Double_t AliGenHBTosl::Rotate(Double_t x,Double_t y,Double_t z) TVector3 v(x,y,z); Double_t a1 = -TMath::ATan2(v.Y(),v.X()); - ::Info("Rotate","Xpr = %f Ypr = %f",xprime,yprime); - ::Info("Rotate","Calc sin = %f, and %f",sinphi,TMath::Sin(a1)); - ::Info("Rotate","Calc cos = %f, and %f",cosphi,TMath::Cos(a1)); - - + if (AliDebugLevel()>5) + { + AliInfo(Form("Xpr = %f Ypr = %f",xprime,yprime)); + AliInfo(Form("Calc sin = %f, and %f",sinphi,TMath::Sin(a1))); + AliInfo(Form("Calc cos = %f, and %f",cosphi,TMath::Cos(a1))); + } + Double_t xprimezlength = TMath::Hypot(xprime,z); Double_t sintheta = z/xprimezlength; @@ -1710,7 +1831,7 @@ Double_t AliGenHBTosl::Rotate(Double_t x,Double_t y,Double_t z) Double_t xbis = sintheta*z + costheta*(cosphi*x - sinphi*y); - ::Info("Rotate","Calculated rot %f, modulus %f",xbis,TMath::Sqrt(x*x+y*y+z*z)); + AliInfo(Form("Calculated rot %f, modulus %f",xbis,TMath::Sqrt(x*x+y*y+z*z))); return xbis; } /***********************************************************/ @@ -1738,17 +1859,17 @@ AliStack* AliGenHBTosl::RotateStack() Double_t AliGenHBTosl::GetQInvCorrTheorValue(Double_t qinv) const { //Function (deprecated) - static const Double_t factorsqrd = 0.197*0.197;//squared conversion factor SI<->eV + static const Double_t kFactorsqrd = 0.197*0.197;//squared conversion factor SI<->eV - return 1.0 + 0.5*TMath::Exp(-qinv*qinv*fQRadius*fQRadius/factorsqrd); + return 1.0 + 0.5*TMath::Exp(-qinv*qinv*fQRadius*fQRadius/kFactorsqrd); } /***********************************************************/ Double_t AliGenHBTosl::GetQOutQSideQLongCorrTheorValue(Double_t& out, Double_t& side, Double_t& lon) const { //Theoretical function. Wa want to get correlation of the shape of this function - static const Double_t factorsqrd = 0.197*0.197;//squared conversion factor SI<->eV - return 1.0 + 0.7*TMath::Exp(-fQRadius*fQRadius*(out*out+side*side+lon*lon)/factorsqrd); + static const Double_t kFactorsqrd = 0.197*0.197;//squared conversion factor SI<->eV + return 1.0 + 0.7*TMath::Exp(-fQRadius*fQRadius*(out*out+side*side+lon*lon)/kFactorsqrd); } /***********************************************************/ @@ -1756,7 +1877,7 @@ Bool_t AliGenHBTosl::CheckParticle(TParticle* p, TParticle* aupair ,AliStack* st { //Checks if a given particle is falling into signal region with any other particle //already existing on stack - return kFALSE; + //PH return kFALSE; if (fSignalRegion <=0) return kFALSE; @@ -1820,3 +1941,20 @@ void AliGenHBTosl::SwapGeneratingHistograms() fSwapped = kTRUE; } + +AliGenHBTosl& AliGenHBTosl::operator=(const AliGenHBTosl& rhs) +{ +// Assignment operator + rhs.Copy(*this); + return *this; +} + +void AliGenHBTosl::Copy(TObject&) const +{ + // + // Copy + // + Fatal("Copy","Not implemented!\n"); +} + +