Introduction of the Copyright and cvs Log
[u/mrichter/AliRoot.git] / FMD / AliFMD.cxx
CommitLineData
4c039060 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
fe4da5cc 20///////////////////////////////////////////////////////////////////////////////
21// //
22// Forward Multiplicity Detector //
23// This class contains the base procedures for the Forward Multiplicity //
24// detector //
25// //
26//Begin_Html
27/*
1439f98e 28<img src="picts/AliFMDClass.gif">
fe4da5cc 29</pre>
30<br clear=left>
31<font size=+2 color=red>
32<p>The responsible person for this module is
33<a href="mailto:Valeri.Kondratiev@cern.ch">Valeri Kondratiev</a>.
34</font>
35<pre>
36*/
37//End_Html
38// //
39// //
40///////////////////////////////////////////////////////////////////////////////
41
42#include <TTUBE.h>
43#include <TNode.h>
44#include "AliRun.h"
45#include "AliFMD.h"
fe4da5cc 46
47ClassImp(AliFMD)
48
49//_____________________________________________________________________________
50AliFMD::AliFMD(): AliDetector()
51{
52 //
53 // Default constructor for class AliFMD
54 //
55 fIshunt = 0;
56}
57
58//_____________________________________________________________________________
59AliFMD::AliFMD(const char *name, const char *title)
60 : AliDetector(name,title)
61{
62 //
63 // Standard constructor for Forward Multiplicity Detector
64 //
65
66 //
67 // Initialise Hit array
68 fHits = new TClonesArray("AliFMDhit", 405);
69
70 fIshunt = 0;
71}
72
73//_____________________________________________________________________________
74void AliFMD::AddHit(Int_t track, Int_t *vol, Float_t *hits)
75{
76 //
77 // Add a FMD hit
78 //
79 TClonesArray &lhits = *fHits;
80 new(lhits[fNhits++]) AliFMDhit(fIshunt,track,vol,hits);
81}
82
83//_____________________________________________________________________________
84void AliFMD::BuildGeometry()
85{
86 //
87 // Build simple ROOT TNode geometry for event display
88 //
89 TNode *Node, *Top;
90 const int kColorFMD = 7;
91 //
92 Top=gAlice->GetGeometry()->GetNode("alice");
93
94 // FMD define the different volumes
95
96 new TTUBE("S_FMD1","FMD sensitive volume 1","void",4.5,10.5,3);
97 Top->cd();
98 Node = new TNode("FMD1","FMD1","S_FMD1",0,0,86.5,"");
99 Node->SetLineColor(kColorFMD);
100 fNodes->Add(Node);
101
102 new TTUBE("S_FMD2","FMD sensitive volume 2","void",4.5,10.5,3);
103 Top->cd();
104 Node = new TNode("FMD2","FMD2","S_FMD2",0,0,-86.5,"");
105 Node->SetLineColor(kColorFMD);
106 fNodes->Add(Node);
107
108 new TTUBE("S_FMD3","FMD sensitive volume 3","void",8,14,3);
109 Top->cd();
110 Node = new TNode("FMD3","FMD3","S_FMD3",0,0,71.2,"");
111 Node->SetLineColor(kColorFMD);
112 fNodes->Add(Node);
113
114 new TTUBE("S_FMD4","FMD sensitive volume 4","void",8,14,3);
115 Top->cd();
116 Node = new TNode("FMD4","FMD4","S_FMD4",0,0,-71.2,"");
117 fNodes->Add(Node);
118 Node->SetLineColor(kColorFMD);
119
120 new TTUBE("S_FMD5","FMD sensitive volume 5","void",8,17.5,3);
121 Top->cd();
122 Node = new TNode("FMD5","FMD5","S_FMD5",0,0,44,"");
123 Node->SetLineColor(kColorFMD);
124 fNodes->Add(Node);
125
126 new TTUBE("S_FMD6","FMD sensitive volume 6","void",8,17.5,3);
127 Top->cd();
128 Node = new TNode("FMD6","FMD6","S_FMD6",0,0,-44,"");
129 Node->SetLineColor(kColorFMD);
130 fNodes->Add(Node);
131
132 new TTUBE("S_FMD7","FMD sensitive volume 7","void",4.2,13,3);
133 Top->cd();
134 Node = new TNode("FMD7","FMD7","S_FMD7",0,0,-231,"");
135 Node->SetLineColor(kColorFMD);
136 fNodes->Add(Node);
137}
138
139//_____________________________________________________________________________
140Int_t AliFMD::DistancetoPrimitive(Int_t , Int_t )
141{
142 //
143 // Calculate the distance from the mouse to the FMD on the screen
144 // Dummy routine
145 //
146 return 9999;
147}
148
149//_____________________________________________________________________________
150void AliFMD::StepManager()
151{
152 //
153 // Called for each step in the FMD
154 //
155
156 Float_t hits[3];
0a6d8768 157 Int_t i,copy,vol[1];
fe4da5cc 158 TClonesArray &lhits = *fHits;
0a6d8768 159 TLorentzVector p;
fe4da5cc 160
0a6d8768 161 gMC->CurrentVolID(copy);
fe4da5cc 162 vol[0] = copy;
0a6d8768 163 gMC->TrackPosition(p);
164 for(i=0;i<3;++i) hits[i]=p[i];
fe4da5cc 165 new(lhits[fNhits++]) AliFMDhit(fIshunt,gAlice->CurrentTrack(),vol,hits);
166}
167
168//___________________________________________
169void AliFMD::Init()
170{
171 //
172 // Initialis the FMD after it has been built
173 Int_t i;
174 //
175 printf("\n");
176 for(i=0;i<35;i++) printf("*");
177 printf(" FMD_INIT ");
178 for(i=0;i<35;i++) printf("*");
179 printf("\n");
180 //
181 // Here the FMD initialisation code (if any!)
182 for(i=0;i<80;i++) printf("*");
183 printf("\n");
184}
185
186
187ClassImp(AliFMDhit)
188
189//_____________________________________________________________________________
190AliFMDhit::AliFMDhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
191 AliHit(shunt, track)
192{
193 //
194 // Add a FMD hit
195 //
196 fVolume = vol[0];
197 fX=hits[0];
198 fY=hits[1];
199 fZ=hits[2];
200}
201