AliRoot Core  v5-06-15 (45dab64)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONResponseFactory.cxx
Go to the documentation of this file.
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 /* $Id$ */
17 
18 //-----------------------------------------------------------------------------
19 // Class AliMUONResponseFactory
20 // -----------------------------
21 // Factory for muon response
22 // Class separated from AliMUONFactoryV4
23 //-----------------------------------------------------------------------------
24 
25 #include "AliMUONResponseFactory.h"
26 #include "AliRun.h"
27 #include "AliLog.h"
28 
29 #include "AliMpPlaneType.h"
30 
31 #include "AliMUON.h"
32 #include "AliMUONConstants.h"
33 #include "AliMUONChamber.h"
34 #include "AliMUONResponseV0.h"
35 #include "AliMUONResponseTrigger.h"
37 
38 using std::endl;
42 
43 //__________________________________________________________________________
45  Bool_t isTailEffect)
46  : TNamed(name, ""),
47  fMUON(0),
48  fResponse0(0),
49  fIsTailEffect(isTailEffect)
50 {
52 
53  AliDebug(1,Form("ctor this=%p",this));
54 }
55 
56 //__________________________________________________________________________
58  : TNamed(),
59  fMUON(0),
60  fResponse0(0),
61  fIsTailEffect(kTRUE)
62 {
64 
65  AliDebug(1,Form("default (empty) ctor this=%p",this));
66 }
67 
68 //__________________________________________________________________________
69 
71 {
73  AliDebug(1,Form("dtor this=%p",this));
74  delete fResponse0;
75 }
76 
77 //__________________________________________________________________________
79 {
81 
82  // Default response: 5 mm of gas
84  fResponse0->SetSqrtKx3AndDeriveKx2Kx4(0.7131); // sqrt(0.5085)
85  fResponse0->SetSqrtKy3AndDeriveKy2Ky4(0.7642); // sqrt(0.5840)
86  fResponse0->SetPitch(AliMUONConstants::Pitch()); // anode-cathode distance
89  fResponse0->SetChargeSpread(0.18, 0.18);
90  fResponse0->SetMaxAdc(4096);
94 }
95 
96 //__________________________________________________________________________
98 {
100 
101  // Response for 4 mm of gas (station 1)
102  // automatic consistency with width of sensitive medium in CreateGeometry ????
103  AliMUONResponseV0 responseSt1;
104  // Mathieson parameters from L.Kharmandarian's thesis, page 190
105  responseSt1.SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
106  responseSt1.SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
107  responseSt1.SetPitch(AliMUONConstants::PitchSt1()); // anode-cathode distance
108  responseSt1.SetSigmaIntegration(10.);
109  // ChargeSlope larger to compensate for the smaller anode-cathode distance
110  // and keep the same most probable ADC channel for mip's
111  responseSt1.SetChargeSlope(25); // SP & JC ajusted to match 2010 real data was 62.5
112  // assumed proportionality to anode-cathode distance for ChargeSpread
113  responseSt1.SetChargeSpread(0.144, 0.144);
114  responseSt1.SetMaxAdc(4096);
115  responseSt1.SetSaturation(3000);
116  responseSt1.SetZeroSuppression(6);
117  responseSt1.SetTailEffect(fIsTailEffect);
118 
119  for (Int_t chamber = 0; chamber < 2; chamber++) {
120  fMUON->SetResponseModel(chamber, responseSt1); // special response
121  fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
122  }
123 }
124 
125 //__________________________________________________________________________
127 {
129 
130  for (Int_t chamber = 2; chamber < 4; chamber++) {
131  fMUON->SetResponseModel(chamber, *fResponse0); // normal response
132  fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
133  }
134 }
135 
136 //__________________________________________________________________________
138 {
140 
141  for (Int_t chamber = 4; chamber < 6; chamber++) {
142  fMUON->SetResponseModel(chamber, *fResponse0); // normal response
143  fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
144  }
145 }
146 
147 //__________________________________________________________________________
149 {
151 
152  for (Int_t chamber = 6; chamber < 8; chamber++) {
153  fMUON->SetResponseModel(chamber, *fResponse0); // normal response
154  fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
155  }
156 }
157 
158 //__________________________________________________________________________
160 {
162 
163  for (Int_t chamber = 8; chamber < 10; chamber++) {
164  fMUON->SetResponseModel(chamber, *fResponse0); // normal response
165  fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
166  }
167 }
168 
169 //__________________________________________________________________________
171 {
173 
174  Int_t resTrigV1 = fMUON->GetTriggerResponseV1();
175 
176  for (Int_t chamber = 10; chamber < 14; chamber++)
177  {
178  AliMUONResponse* response;
179  if(resTrigV1==1 || resTrigV1==2) //cluster size ON
180  {
181  response = new AliMUONResponseTriggerV1(resTrigV1); //1=STREAMER - 2=AVALANCHE
182  }
183 
184  else // default: clustrer size OFF
185  {
186  response = new AliMUONResponseTrigger;
187  }
188 
189  fMUON->SetResponseModel(chamber,*response);
190  fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on both cathodes
191  delete response;
192  }
193 }
194 
195 //__________________________________________________________________________
197 {
199 
200  AliDebugStream(1) << "Tail effect: " << fIsTailEffect << endl;
201 
202  fMUON = where;
203 
204  // Set default parameters
205  fMUON->SetIshunt(0);
206  fMUON->SetMaxStepGas(0.1);
207  fMUON->SetMaxStepAlu(0.1);
208 
209  // Build stations
210  BuildCommon();
211  BuildStation1();
212  BuildStation2();
213  BuildStation3();
214  BuildStation4();
215  BuildStation5();
216  BuildStation6();
217 }
218 
219 //__________________________________________________________________________
220 void AliMUONResponseFactory::BuildStation(AliMUON* where, Int_t stationNumber)
221 {
223 
224  fMUON = where;
225  if (!fResponse0) BuildCommon();
226 
227  switch (stationNumber) {
228  case 1: BuildStation1(); break;
229  case 2: BuildStation2(); break;
230  case 3: BuildStation3(); break;
231  case 4: BuildStation4(); break;
232  case 5: BuildStation5(); break;
233  case 6: BuildStation6(); break;
234 
235  default: AliFatal("Wrong station number");
236  }
237 }
static Float_t Pitch()
Return wire pitch.
virtual void SetTailEffect(Bool_t isTail)
Parametrised tail effect in resolution histogram.
virtual AliMUONChamber & Chamber(Int_t id)
Return reference to Chamber id.
Definition: AliMUON.h:135
AliDetector class for MUON subsystem providing simulation data management.
Definition: AliMUON.h:37
virtual void SetSqrtKy3AndDeriveKy2Ky4(Float_t SqrtKy3)
Mathieson sqrt{Ky3} and derived Ky2 and Ky4.
virtual void SetPitch(Float_t p1)
Get anode cathode Pitch.
static Float_t PitchSt1()
Return wire pitch for Station 1 & 2.
Bool_t fIsTailEffect
switch to turn on/off the tail effect
virtual void SetMaxStepGas(Float_t p1)
Definition: AliMUON.cxx:358
ClassImp(TPCGenInfo)
Definition: AliTPCCmpNG.C:254
Factory for muon response.
virtual void SetResponseModel(Int_t id, const AliMUONResponse &response)
Definition: AliMUON.cxx:435
AliMUONResponseV0 * fResponse0
default response
virtual void SetZeroSuppression(Int_t p1)
Set zero suppression threshold.
virtual void SetSigmaIntegration(Float_t p1)
Set number of sigmas over which cluster didintegration is performed.
Implementation of RPC response.
AliMUON * fMUON
MUON detector.
Implementation of RPC response.
virtual void SetMaxAdc(Int_t p1)
Set maximum Adc-count value.
virtual Int_t GetTriggerResponseV1() const
Definition: AliMUON.cxx:611
virtual void SetChargeCorrel(Float_t correl)
Set charge correlation.
Implementation of Mathieson response.
virtual void SetChargeSlope(Float_t p1)
Set single electron pulse height (ADCcounts/e)
void BuildStation(AliMUON *where, Int_t stationNumber)
virtual void SetSqrtKx3AndDeriveKx2Kx4(Float_t SqrtKx3)
Chamber response base class.
virtual void SetMaxStepAlu(Float_t p1)
Definition: AliMUON.cxx:365
virtual void SetSaturation(Int_t p1)
Set saturation value.
virtual void SetChargeSpread(Float_t p1, Float_t p2)
Set sigmas of the charge spread function.