]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/TPCupgrade/macros/makeTree.C
TPC module
[u/mrichter/AliRoot.git] / TPC / TPCupgrade / macros / makeTree.C
CommitLineData
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
15void 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