2 #include "ToyMCEventGeneratorSimple.h"
3 #include <TDatabasePDG.h>
6 #include "ToyMCEvent.h"
8 ClassImp(ToyMCEventGeneratorSimple);
11 ToyMCEventGeneratorSimple::ToyMCEventGeneratorSimple()
12 :ToyMCEventGenerator()
19 //________________________________________________________________
20 ToyMCEventGeneratorSimple::ToyMCEventGeneratorSimple(const ToyMCEventGeneratorSimple &gen)
21 :ToyMCEventGenerator(gen)
22 ,fVertexMean(gen.fVertexMean)
23 ,fVertexSigma(gen.fVertexSigma)
26 //________________________________________________________________
27 ToyMCEventGeneratorSimple::~ToyMCEventGeneratorSimple()
30 //________________________________________________________________
31 ToyMCEventGeneratorSimple& ToyMCEventGeneratorSimple::operator = (const ToyMCEventGeneratorSimple &gen)
34 if (&gen == this) return *this;
35 new (this) ToyMCEventGeneratorSimple(gen);
39 //________________________________________________________________
40 void ToyMCEventGeneratorSimple::SetParameters(Double_t vertexMean, Double_t vertexSigma) {
41 fVertexMean = vertexMean;
42 fVertexSigma = vertexSigma;
44 //________________________________________________________________
45 ToyMCEvent* ToyMCEventGeneratorSimple::Generate(Double_t time) {
47 ToyMCEvent *retEvent = new ToyMCEvent();
48 retEvent->SetT0(time);
51 retEvent->SetZ(gRandom->Gaus(fVertexMean,fVertexSigma));
54 Double_t mass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
55 TF1 fpt("fpt",Form("x*(1+(sqrt(x*x+%f^2)-%f)/([0]*[1]))^(-[0])",mass,mass),0.4,10);
56 fpt.SetParameters(7.24,0.120);
58 Int_t nTracks = 400; //TODO: draw from experim dist
60 for(Int_t iTrack=0; iTrack<nTracks; iTrack++){
61 Double_t phi = gRandom->Uniform(0.0, 2*TMath::Pi());
62 Double_t eta = gRandom->Uniform(-etaCuts, etaCuts);
63 Double_t pt = fpt.GetRandom(); // momentum for f1
65 if(gRandom->Rndm() < 0.5){
71 Double_t theta = 2*TMath::ATan(TMath::Exp(-eta))-TMath::Pi()/2.;
73 pxyz[0]=pt*TMath::Cos(phi);
74 pxyz[1]=pt*TMath::Sin(phi);
75 pxyz[2]=pt*TMath::Tan(theta);
76 Double_t vertex[3]={0,0,retEvent->GetZ()};
78 ToyMCTrack *tempTrack = new ToyMCTrack(vertex,pxyz,cv,sign);
80 Bool_t trackDist = DistortTrack(*tempTrack, time);
81 if(trackDist) retEvent->AddTrack(*tempTrack);