1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.1 2000/06/12 15:29:37 jbarbosa
23 #include "AliRICHResponseV0.h"
24 #include "AliRICHSegmentation.h"
30 #include <TParticle.h>
31 //___________________________________________
32 ClassImp(AliRICHResponseV0)
34 Float_t AliRICHResponseV0::IntPH(Float_t eloss)
36 // Get number of electrons and return charge
39 nel= Int_t(eloss/fEIonisation);
43 for (Int_t i=1;i<=nel;i++) {
44 charge -= fChargeSlope*TMath::Log(gRandom->Rndm());
49 Float_t AliRICHResponseV0::IntPH()
52 // Get number of electrons and return charge, for a single photon
54 Float_t charge = -fChargeSlope*TMath::Log(gRandom->Rndm());
60 // -------------------------------------------
61 Float_t AliRICHResponseV0::IntXY(AliRICHSegmentation * segmentation)
64 const Float_t kInversePitch = 1/fPitch;
67 // Integration limits defined by segmentation model
70 Float_t xi1, xi2, yi1, yi2;
71 segmentation->IntegrationLimits(xi1,xi2,yi1,yi2);
73 xi1=xi1*kInversePitch;
74 xi2=xi2*kInversePitch;
75 yi1=yi1*kInversePitch;
76 yi2=yi2*kInversePitch;
78 //printf("Integration Limits: %f-%f, %f-%f\n",xi1,xi2,yi1,yi2);
80 //printf("KInversePitch:%f\n",kInversePitch);
83 // The Mathieson function
84 Double_t ux1=fSqrtKx3*TMath::TanH(fKx2*xi1);
85 Double_t ux2=fSqrtKx3*TMath::TanH(fKx2*xi2);
87 Double_t uy1=fSqrtKy3*TMath::TanH(fKy2*yi1);
88 Double_t uy2=fSqrtKy3*TMath::TanH(fKy2*yi2);
90 //printf("Integration Data: %f-%f, %f-%f\n",ux1,ux2,uy1,uy2);
92 //printf("%f %f %f %f\n",fSqrtKx3,fKx2,fKy4,fKx4);
94 response=4.*fKx4*(TMath::ATan(ux2)-TMath::ATan(ux1))*fKy4*(TMath::ATan(uy2)-TMath::ATan(uy1));
96 //printf("Response:%f\n",response);
102 Int_t AliRICHResponseV0::FeedBackPhotons(Float_t *source, Float_t qtot)
105 // Generate FeedBack photons
113 Float_t cthf, ranf[2], phif, enfp = 0, sthf;
115 Float_t e1[3], e2[3], e3[3];
120 Float_t pol[3], mom[3];
121 TLorentzVector position;
123 // Determine number of feedback photons
125 // Get weight of current particle
126 TParticle *current = (TParticle*)
127 (*gAlice->Particles())[gAlice->CurrentTrack()];
129 ifeed = Int_t(current->GetWeight()/100+0.5);
130 ipart = gMC->TrackPid();
131 fp = fAlphaFeedback * qtot;
132 nfp = gRandom->Poisson(fp);
134 // This call to fill the time of flight
135 gMC->TrackPosition(position);
138 for (i = 0; i <nfp; i++) {
142 cthf = ranf[0] * 2 - 1.;
143 if (cthf < 0) continue;
144 sthf = TMath::Sqrt((1 - cthf) * (1 + cthf));
145 phif = ranf[1] * 2 * TMath::Pi();
147 gMC->Rndm(&random, 1);
150 } else if (random <= .7) {
156 dir[0] = sthf * TMath::Sin(phif);
158 dir[2] = sthf * TMath::Cos(phif);
159 gMC->Gdtom(dir, mom, 2);
178 for(j=0;j<3;j++) vmod+=e1[j]*e1[j];
179 if (!vmod) for(j=0;j<3;j++) {
185 for(j=0;j<3;j++) vmod+=e2[j]*e2[j];
186 if (!vmod) for(j=0;j<3;j++) {
193 for(j=0;j<3;j++) vmod+=e1[j]*e1[j];
194 vmod=TMath::Sqrt(1/vmod);
195 for(j=0;j<3;j++) e1[j]*=vmod;
198 for(j=0;j<3;j++) vmod+=e2[j]*e2[j];
199 vmod=TMath::Sqrt(1/vmod);
200 for(j=0;j<3;j++) e2[j]*=vmod;
203 phi = ranf[0] * 2 * TMath::Pi();
204 for(j=0;j<3;j++) pol[j]=e1[j]*TMath::Sin(phi)+e2[j]*TMath::Cos(phi);
205 gMC->Gdtom(pol, pol, 2);
207 // Put photon on the stack and label it as feedback (51, 52)
210 gAlice->SetTrack(Int_t(1), gAlice->CurrentTrack(), Int_t(50000051),
211 mom,source,pol,position[3],