]>
Commit | Line | Data |
---|---|---|
402a4145 | 1 | #include <iostream> |
2 | #include <TFile.h> | |
3 | #include <TTree.h> | |
4 | #include <TRandom3.h> | |
5 | #include "AliToyMCEvent.h" | |
6 | #include "AliToyMCEventGenerator.h" | |
7 | #include "AliToyMCEventGeneratorSimple.h" | |
8 | #include <TRandom.h> | |
9 | ||
10 | //to use: root -l loadlibs.C | |
11 | // .L makeTree.C+ | |
12 | // makeTree(50,10,10) for 50 kHz average frequency, 10MHz bunch crossing and 10 events. | |
13 | ||
14 | ||
15 | void makeTree(Double_t collFreq/*kHz*/, Double_t bunchFreq/*MHz*/, Int_t nEvents, Bool_t fixedFreq = kFALSE, Bool_t noVertSpread = kFALSE) { | |
16 | ||
17 | ||
18 | TFile* outFile = new TFile(Form("toymcevents%2.1fkHz_%d%s%s.root",collFreq,nEvents,fixedFreq?"_fixedfreq":"",noVertSpread?"_novertspread":"" ),"recreate"); | |
19 | TTree* outTree = new TTree("AliToyMC","AliToyMC"); | |
20 | AliToyMCEvent* event = 0x0; | |
21 | outTree->Bronch("AliToyMCEvents","AliToyMCEvent",&event); | |
22 | ||
23 | ||
24 | Double_t collProb = (collFreq*1000)/(bunchFreq*1000000); | |
25 | Int_t generatedEvents = 0; | |
26 | AliToyMCEventGeneratorSimple* evGen = new AliToyMCEventGeneratorSimple(); | |
27 | if(noVertSpread)evGen->SetParameters("files/params.root",0.,0.); //mean, sigma of vertex | |
28 | else evGen->SetParameters("files/params.root",0,0.7); //mean, sigma of vertex | |
29 | //generate events | |
30 | Double_t time = 0.; | |
31 | while(generatedEvents < nEvents) { | |
32 | ||
33 | //draw number of collissions in crossing | |
34 | Int_t nColls = gRandom->Poisson(collProb); | |
35 | if(fixedFreq) nColls =1; | |
36 | for (Int_t iColl = 0; iColl<nColls; iColl++) { | |
37 | ||
38 | event = evGen->Generate(time); | |
39 | outTree->Fill(); | |
40 | generatedEvents++; | |
41 | delete event; | |
42 | } | |
43 | if(!fixedFreq) time += 1./(bunchFreq); //microseconds | |
44 | else time += 1./(collFreq/1000); | |
45 | ///*if(generatedEvents%10==0)*/ std::cout << generatedEvents << " time: " << time << " " << collProb << std::endl; | |
46 | } | |
47 | outFile->Write(); | |
48 | outFile->Close(); | |
49 | } | |
50 |