]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONChamberTrigger.cxx
Empty default constructors and.
[u/mrichter/AliRoot.git] / MUON / AliMUONChamberTrigger.cxx
CommitLineData
a9e2aefa 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$
03f221a7 18Revision 1.7 2000/10/02 16:58:29 egangler
19Cleaning of the code :
20-> coding conventions
21-> void Streamers
22-> some useless includes removed or replaced by "class" statement
23
ecfa008b 24Revision 1.6 2000/07/03 11:54:57 morsch
25AliMUONSegmentation and AliMUONHitMap have been replaced by AliSegmentation and AliHitMap in STEER
26The methods GetPadIxy and GetPadXxy of AliMUONSegmentation have changed name to GetPadI and GetPadC.
27
a30a000f 28Revision 1.5 2000/06/29 12:34:09 morsch
29AliMUONSegmentation class has been made independent of AliMUONChamber. This makes
30it usable with any other geometry class. The link to the object to which it belongs is
31established via an index. This assumes that there exists a global geometry manager
32from which the pointer to the parent object can be obtained (in our case gAlice).
33
d81db581 34Revision 1.4 2000/06/29 06:52:02 pcrochet
35pow changed to TMath::Power
36
39f5a0e6 37Revision 1.3 2000/06/28 15:16:35 morsch
38(1) Client code adapted to new method signatures in AliMUONSegmentation (see comments there)
39to allow development of slat-muon chamber simulation and reconstruction code in the MUON
40framework. The changes should have no side effects (mostly dummy arguments).
41(2) Hit disintegration uses 3-dim hit coordinates to allow simulation
42of chambers with overlapping modules (MakePadHits, Disintegration).
43
802a864d 44Revision 1.2 2000/06/15 07:58:48 morsch
45Code from MUON-dev joined
46
a9e2aefa 47Revision 1.1.2.3 2000/06/09 21:27:35 morsch
48Most coding rule violations corrected.
49
50Revision 1.1.2.2 2000/04/26 12:28:25 morsch
51- flag pad hits with condition on ToF (CP)
52- Tof included in the method DisIntegration (CP)
53
54Revision 1.1.2.1 2000/02/17 14:30:54 morsch
55Draft version
56
57*/
58
59#include "AliMUONChamberTrigger.h"
60#include "AliMUONSegmentationTrigger.h"
61#include "AliMUONResponseTrigger.h"
03f221a7 62#include "AliMUONResponseTriggerV1.h"
a9e2aefa 63#include <TObjArray.h>
64#include <TMath.h>
65#include <iostream.h>
66
67ClassImp(AliMUONChamberTrigger)
68
69//-------------------------------------------
d81db581 70
03f221a7 71AliMUONChamberTrigger::AliMUONChamberTrigger()
d81db581 72{
73// Default constructor
74}
75
76
77AliMUONChamberTrigger::AliMUONChamberTrigger(Int_t id) : AliMUONChamber(id)
a9e2aefa 78{
d81db581 79// Constructor using chamber id
a9e2aefa 80}
81
82//-------------------------------------------
83void AliMUONChamberTrigger::DisIntegration(Float_t eloss, Float_t tof,
802a864d 84 Float_t xhit, Float_t yhit, Float_t zhit,
a9e2aefa 85 Int_t& nnew,
86 Float_t newclust[6][500])
87{
88//
89// Generates pad hits (simulated cluster)
90// using the segmentation and the response model
91
92 Int_t twentyNano;
39f5a0e6 93 if (tof<75*TMath::Power(10,-9)) {
a9e2aefa 94 twentyNano=1;
95 } else {
96 twentyNano=100;
97 }
98
99 // cout << " time = " << tof << " , " << twentyNano << "\n";
100
101 Float_t qp;
102 nnew=0;
103 for (Int_t i=1; i<=fnsec; i++) {
a30a000f 104 AliSegmentation * segmentation=
105 (AliSegmentation*) (*fSegmentation)[i-1];
a9e2aefa 106
107// Find the module & strip Id. which has fired
108 Int_t ix,iy;
109
a30a000f 110 segmentation->GetPadI(xhit,yhit,0,ix,iy);
a9e2aefa 111 segmentation->SetPad(ix,iy);
112
113// treatment of GEANT hits w/o corresponding strip (due to the fact that
114// the 2 geometries are computed in a very slightly different way)
115 if (ix==0&&iy==0) {
116 cout << " AliMUONChamberTrigger hit w/o strip " << xhit << " , " << yhit << "\n";
117 } else {
118 // --- store signal information for this strip
119 newclust[0][nnew]=1.; // total charge
120 newclust[1][nnew]=ix; // ix-position of pad
121 newclust[2][nnew]=iy; // iy-position of pad
122 newclust[3][nnew]=twentyNano; // time of flight
123 newclust[4][nnew]=segmentation->ISector(); // sector id
124 newclust[5][nnew]=(Float_t) i; // counter
125 nnew++;
03f221a7 126
127// cluster-size if AliMUONResponseTriggerV1, nothing if AliMUONResponseTrigger
128 if (((AliMUONResponseTrigger*) fResponse)->SetGenerCluster()) {
129
130 // set hits
131 segmentation->SetHit(xhit,yhit,zhit);
132 // get the list of nearest neighbours
133 Int_t nList, xList[10], yList[10];
134 segmentation->Neighbours(ix,iy,&nList,xList,yList);
a9e2aefa 135
03f221a7 136 qp = 0;
137 for (Int_t j=0; j<nList; j++){ // loop over neighbours
138 if (xList[j]!=0) { // existing neighbour
139 if (j==0||j==5||qp!=0) { // built-up cluster-size
140
141 // neighbour real coordinates (just for checks here)
142 Float_t x,y,z;
143 segmentation->GetPadC(xList[j],yList[j],x,y,z);
144 // set pad (fx fy & fix fiy are the current pad coord. & Id.)
145 segmentation->SetPad(xList[j],yList[j]);
146 // get the chamber (i.e. current strip) response
147 qp=fResponse->IntXY(segmentation);
148
149 if (qp > 0.5) {
150 // --- store signal information for neighbours
151 newclust[0][nnew]=qp; // total charge
152 newclust[1][nnew]=segmentation->Ix(); // ix-pos. of pad
153 newclust[2][nnew]=segmentation->Iy(); // iy-pos. of pad
154 newclust[3][nnew]=twentyNano; // time of flight
155 newclust[4][nnew]=segmentation->ISector(); // sector id
156 newclust[5][nnew]=(Float_t) i; // counter
157 nnew++;
158 } // qp > 0.5
159 } // built-up cluster-size
160 } // existing neighbour
161 } // loop over neighbours
162 } // endif hit w/o strip
163 } // loop over planes
164 } // if AliMUONResponseTriggerV1
a9e2aefa 165}
166
167
168
169
170
171
172
173
03f221a7 174
175