ROOT logo
#include <iostream> 
#include <TFile.h>
#include <TTree.h>
#include <TRandom3.h>
#include "AliToyMCEvent.h"
#include "AliToyMCEventGenerator.h"
#include "AliToyMCEventGeneratorSimple.h"
#include <TRandom.h>

//to use: root -l loadlibs.C
//    .L makeTree.C+
//    makeTree(50,10,10) for 50 kHz average frequency, 10MHz bunch crossing and 10 events. 


void makeTree(Double_t collFreq/*kHz*/, Double_t bunchFreq/*MHz*/, Int_t nEvents, Bool_t fixedFreq = kFALSE, Bool_t noVertSpread = kFALSE) {

  
  TFile* outFile = new TFile(Form("toymcevents%2.1fkHz_%d%s%s.root",collFreq,nEvents,fixedFreq?"_fixedfreq":"",noVertSpread?"_novertspread":"" ),"recreate");
  TTree* outTree = new TTree("AliToyMC","AliToyMC");
  AliToyMCEvent* event = 0x0;
  outTree->Bronch("AliToyMCEvents","AliToyMCEvent",&event);


  Double_t collProb = (collFreq*1000)/(bunchFreq*1000000);
  Int_t generatedEvents = 0;
  AliToyMCEventGeneratorSimple* evGen = new AliToyMCEventGeneratorSimple();
  if(noVertSpread)evGen->SetParameters("files/params.root",0.,0.); //mean, sigma of vertex
  else evGen->SetParameters("files/params.root",0,0.7); //mean, sigma of vertex
  //generate events
  Double_t time = 0.;
  while(generatedEvents < nEvents) {

    //draw number of collissions in crossing
    Int_t nColls = gRandom->Poisson(collProb);
    if(fixedFreq) nColls =1;
    for (Int_t iColl = 0; iColl<nColls; iColl++)       {
      
      event = evGen->Generate(time);
      outTree->Fill();
      generatedEvents++;
      delete event;
    }
    if(!fixedFreq) time += 1./(bunchFreq); //microseconds
    else time += 1./(collFreq/1000);
    ///*if(generatedEvents%10==0)*/ std::cout << generatedEvents << " time: " << time << " " << collProb << std::endl;
  }
  outFile->Write();
  outFile->Close();
}  
 
 makeTree.C:1
 makeTree.C:2
 makeTree.C:3
 makeTree.C:4
 makeTree.C:5
 makeTree.C:6
 makeTree.C:7
 makeTree.C:8
 makeTree.C:9
 makeTree.C:10
 makeTree.C:11
 makeTree.C:12
 makeTree.C:13
 makeTree.C:14
 makeTree.C:15
 makeTree.C:16
 makeTree.C:17
 makeTree.C:18
 makeTree.C:19
 makeTree.C:20
 makeTree.C:21
 makeTree.C:22
 makeTree.C:23
 makeTree.C:24
 makeTree.C:25
 makeTree.C:26
 makeTree.C:27
 makeTree.C:28
 makeTree.C:29
 makeTree.C:30
 makeTree.C:31
 makeTree.C:32
 makeTree.C:33
 makeTree.C:34
 makeTree.C:35
 makeTree.C:36
 makeTree.C:37
 makeTree.C:38
 makeTree.C:39
 makeTree.C:40
 makeTree.C:41
 makeTree.C:42
 makeTree.C:43
 makeTree.C:44
 makeTree.C:45
 makeTree.C:46
 makeTree.C:47
 makeTree.C:48
 makeTree.C:49
 makeTree.C:50
 makeTree.C:51