HARPO  5.1.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sim/testsim.cxx
Go to the documentation of this file.
1 #include "TFile.h"
2 //#include "TTree.h"
3 #include "TClonesArray.h"
4 #include "TCanvas.h"
5 //#include "T.h"
6 
7 #include "TpcSimGeometry.h"
8 #include "HarpoSimChamber.h"
9 #include "HarpoSimStrips.h"
10 #include "HarpoSimEvent.h"
12 #include "TpcSimDriftChamber.h"
13 #include "TpcSimIonisationTrack.h"
14 #include "TpcSimMCEvent.h"
15 #include "TpcSimEventGenerator.h"
16 #include "HarpoSimElectronics.h"
17 #include "HarpoDccMap.h"
18 
19 #include <iostream>
20 
21 using namespace std;
22 
23 int main()
24 {
25 
26  // TFile* rootfile = new TFile("test.root","recreate");
27 
28  TpcSimIonisationChamber* fIonisationChamber = new TpcSimIonisationChamber();
29  // // TCanvas* c = chamber->GetGeom()->DrawDetector();
30  // // c->SaveAs("geom.png");
31  TpcSimEventGenerator* fEventGenerator = new TpcSimEventGenerator();
32 
33  TpcSimDriftChamber* fDriftChamber = new TpcSimDriftChamber();
34 
35  HarpoSimChamber* fHarpoChamber = new HarpoSimChamber();
36  HarpoSimReadout* fHarpoReadout = new HarpoSimReadout();
37  HarpoSimElectronics* fHarpoElectronics = new HarpoSimElectronics();
38  fHarpoChamber->SetDriftChamber(fDriftChamber);
39  fHarpoChamber->SetReadout(fHarpoReadout);
40  fHarpoChamber->SetElectronics(fHarpoElectronics);
41 
42 
43  // TTree* tree = new TTree("tree","tree");
44 
45  // TpcSimMCEvent* fMCEvent = 0;
46  HarpoSimEvent* fEvent = 0;
47  //tree->Bronch("SimEvents", "HarpoSimEvent", &fEvent);
48 
49 
50 
51  // rootfile->Close();
52  // return 0;
53 
54  // fDigi->Reset();
55  // fDriftChamber->Reset();
56 
57  for(Int_t iEv = 0; iEv<2; iEv++){
58  //fIonisationChamber->Reset();
59  cout << "Event " << iEv << endl;
60  // TpcSimMCEvent* ev
61  cout << "Generate MCEvent" << endl;
62  TpcSimMCEvent* fMCEvent = fEventGenerator->GenerateEvent();
63  cout << "Create Event" << endl;
64  //HarpoSimEvent*
65  fEvent = new HarpoSimEvent();
66  fEvent->SetMCEvent(fMCEvent);
67  //fNevts++;
68  cout << "GetNtracks" << endl;
69  Int_t nTr = fMCEvent->GetNtracks();
70  cout << nTr << endl;
71  // if(nTr<=0){
72  // if(gHarpoDebug>0) Info("NextEvent","Empty event %d",iEv);
73  // return false;
74  // }
75  fHarpoChamber->StartEvent();
76 
77  //fEvent->SetMCEvent(ev);
78  for(Int_t iTr = 0; iTr<nTr; iTr++){
79 
80  cout << " Generate Track " << iTr << endl;
81  TpcSimIonisationTrack* tr = fIonisationChamber->GenerateTrack(fMCEvent->GetTrack(iTr));
82  cout << " Add Track in Event" << endl;
83  fEvent->AddIonisationTrack(iTr,tr);
84  //new((*fIonisation)[iTr]) TpcSimIonisationTrack(*tr);
85 
86  //HarpoSimStrips* strips = new HarpoSimStrips();
87  fHarpoReadout->Reset();
88  //fHarpoReadout->SetStrips(strips);
89  fHarpoChamber->ProcessTrack(tr);
90 
91  HarpoSimStrips* strips = fHarpoReadout->GetStrips();
92  strips->SetTrackId(iTr);
93  // new((*fStrips)[iTr]) HarpoSimStrips(*strips);
94  //fEvent->AddStrips(iTr,strips);
95 
96  fHarpoElectronics->ProcessStrips(strips);
97 
98  }
99  cout << "Finish Event" << endl;
100  fHarpoChamber->FinishEvent();
101  cout << "GetDccMapX" << endl;
102  HarpoDccMap* mapX = fHarpoElectronics->GetDccMapX();
103  fEvent->SetDccMapX(mapX);
104 
105  // TCanvas* c = new TCanvas();
106  // mapX->map.Draw("colz");
107  // c->SaveAs(Form("test%d.png",iEv));
108 
109  cout << "GetDccMapY" << endl;
110  HarpoDccMap* mapY = new HarpoDccMap();//fHarpoElectronics->GetDccMapX();
111  fEvent->SetDccMapY(mapY);
112 
113  fEvent->SetHeader(0,iEv);
114  // cout << "Fill Tree" << endl;
115  //tree->Fill();
116  // array->Delete();
117  cout << "Delete MCEvent" << endl;
118  //fMCEvent->Delete();
119  cout << "Delete Event" << endl;
120  fEvent->Delete();
121  cout << "Delete Ionisation tracks" << endl;
122  //fIonisation->Delete();
123  //fStrips->Delete();
124  }
125  // for(Int_t ev = 0; ev<10; ev++){
126  // cout << "EVENT " << ev << endl;
127  // event = evgen->GenerateEvent();
128  // event->GenerateEvent();
129  // Int_t ntracks = event->GetNtracks();
130  // for(Int_t tr = 0; tr<ntracks; tr++){
131  // cout << " " << tr << endl;
132 
133  // TpcSimTrack* trackA = new((*array)[tr]) TpcSimTrack(0,0,10,1,1,1,0,1,ev,tr);
134  // TpcSimTrack* trackB = event->GetSimTrack(tr);
135 
136  // trackA->SetChamber(chamber);
137  // trackB->SetChamber(chamber);
138 
139  // trackA->GenerateTrack();
140  // trackB->GenerateTrack();
141  // }
142  // tree->Fill();
143  // array->Delete();
144  // event->Delete();
145 
146  // }
147 
148  // tree->Write();
149  // rootfile->Close();
150 
151  return 0;
152 }
void SetHeader(UInt_t len, UInt_t evnum)
Int_t ProcessTrack(TpcSimIonisationTrack *tr)
HarpoDccMap * GetDccMapX()
int main()
Definition: sim/testsim.cxx:23
HarpoSimStrips * GetStrips()
void SetDriftChamber(TpcSimDriftChamber *readout)
void SetTrackId(Int_t id)
void SetReadout(HarpoSimReadout *readout)
void SetMCEvent(TpcSimMCEvent *event)
Definition: HarpoSimEvent.h:56
A class store HARPO row DCC event data and header. End provide access metods to the row data...
Definition: HarpoSimEvent.h:24
unpacked dcc data The class contains the data map for DCC or Feminos The data is stored as a 2D TMatr...
Definition: HarpoDccMap.h:29
TpcSimIonisationTrack * GenerateTrack(TpcSimMCTrack *tr)
Int_t AddIonisationTrack(Int_t iTr, TpcSimIonisationTrack *tr)
Int_t GetNtracks()
TpcSimMCTrack * GetTrack(Int_t i)
Definition: TpcSimMCEvent.h:91
void SetElectronics(HarpoSimElectronics *digi)
TpcSimMCEvent * GenerateEvent(Int_t seed=0)