LHC related code. First commit.
[u/mrichter/AliRoot.git] / LHC / AliLHC.cxx
CommitLineData
11141716 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
18*/
19#include "AliLHC.h"
20#include "AliLhcIRegion.h"
21#include "AliLhcProcess.h"
22#include "AliLhcBeam.h"
23
24ClassImp(AliLHC)
25
26AliLHC::AliLHC()
27{
28// Constructor
29 fIRegions = new TList;
30 fProcesses = new TList;
31 fNRegions = 0;
32 fNProcesses = 0;
33 fBeams = new TObjArray(2);
34 (*fBeams)[0] = 0;
35 (*fBeams)[1] = 0;
36 fTime = 0;
37 fTimeMax = 0;
38}
39
40AliLHC::AliLHC(const AliLHC& lhc)
41{
42// copy constructor
43}
44
45AliLHC::~AliLHC()
46{
47// Destructor
48 delete fIRegions;
49 delete fProcesses;
50 delete fBeams;
51}
52
53void AliLHC::AddIRegion(AliLhcIRegion *region)
54{
55//
56// Add region to list
57 fIRegions->Add(region);
58 fNRegions++;
59 }
60
61void AliLHC::AddProcess(AliLhcProcess *process)
62{
63//
64// Add process to list
65 fProcesses->Add(process);
66 fNProcesses++;
67 }
68
69void AliLHC::SetBeams(AliLhcBeam *beam1, AliLhcBeam *beam2 )
70{
71
72//
73// Set the beams
74
75 (*fBeams)[0] = beam1;
76 (*fBeams)[1] = beam2;
77}
78
79 void AliLHC::Init()
80{
81// Initialisation
82 fNt = 0;
83 fNmax = Int_t(fTimeMax/fTimeStep);
84 fTimeA = new Float_t[fNmax];
85 //
86 Beam(0)->Init();
87 Beam(1)->Init();
88
89 TIter next(fIRegions);
90 AliLhcIRegion *region;
91 //
92 // Loop over generators and initialize
93 while((region = (AliLhcIRegion*)next())) {
94 region->Init();
95 region->SetMonitor(fNmax);
96 }
97
98 Beam(0)->SetMonitor(fNmax);
99 Beam(1)->SetMonitor(fNmax);
100
101 TIter nextp(fProcesses);
102 AliLhcProcess *process;
103 //
104 // Loop over generators and initialize
105 while((process = (AliLhcProcess*)nextp())) {
106 process->Init();
107 process->SetMonitor(fNmax);
108 }
109}
110
111 void AliLHC::EvolveTime()
112{
113//
114// Simulate Time Evolution
115//
116 while (fTime <= fTimeMax) {
117 printf("\n Time: %f %f", fTime, fTimeStep);
118 //
119 // Processes
120 //
121 TIter next(fProcesses);
122 AliLhcProcess *process;
123 //
124 // Evolve for each process
125 while((process = (AliLhcProcess*)next())) {
126 process->Evolve(fTimeStep);
127 process->Record();
128 }
129 //
130 // Update and Monitoring
131 //
132 TIter nextregion(fIRegions);
133 AliLhcIRegion *region;
134 //
135 while((region = (AliLhcIRegion*)nextregion())) {
136 printf("\n Region: %s, Luminosity %10.3e",
137 region->GetName(), region->Luminosity());
138 region->Update();
139 region->Record();
140 }
141 Beam(0)->Record();
142 fTimeA[fNt] = fTime/3600.;
143 fTime+=fTimeStep;
144 fNt++;
145 }
146}
147
148void AliLHC::Evaluate()
149{
150 // Evaluation of the results
151 TIter nextregion(fIRegions);
152 AliLhcIRegion *region;
153 //
154 // Loop over generators and initialize
155 while((region = (AliLhcIRegion*)nextregion())) {
156 region->Draw();
157 }
158
159 TIter next(fProcesses);
160 AliLhcProcess *process;
161 //
162 // Evolve for each process
163 while((process = (AliLhcProcess*)next())) {
164 process->Draw();
165 }
166
167 Beam(0)->Draw();
168}
169
170AliLHC& AliLHC::operator=(const AliLHC & rhs)
171{
172// Assignment operator
173 return *this;
174}
175
176