X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDv0.cxx;h=06ffa3dfc9e34b81a6c728fe52851e4f473460ad;hb=d08a92dd3941c5250923cc15a57c9e7a01a3c942;hp=949aa3cbad731bc626c24159d873a99e23635c66;hpb=4c03906077acc435bf9790b980186e0015ea0b89;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDv0.cxx b/TRD/AliTRDv0.cxx index 949aa3cbad7..06ffa3dfc9e 100644 --- a/TRD/AliTRDv0.cxx +++ b/TRD/AliTRDv0.cxx @@ -13,33 +13,48 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -/* -$Log$ -*/ +/* $Id$ */ /////////////////////////////////////////////////////////////////////////////// // // -// Transition Radiation Detector version 0 -- coarse simulation // +// Transition Radiation Detector version 0 -- fast simulator // // // //Begin_Html /* - + */ //End_Html // // // // /////////////////////////////////////////////////////////////////////////////// +#include + +#include #include #include -#include +#include +#include -#include "AliTRDv0.h" +#include "AliConst.h" #include "AliRun.h" +#include "AliTRDgeometry.h" +#include "AliTRDhit.h" +#include "AliTRDv0.h" #include "AliMC.h" -#include "AliConst.h" - + ClassImp(AliTRDv0) + +//_____________________________________________________________________________ +AliTRDv0::AliTRDv0():AliTRD() +{ + // + // AliTRDv0 default constructor + // + + fHitsOn = 0; + +} //_____________________________________________________________________________ AliTRDv0::AliTRDv0(const char *name, const char *title) @@ -49,19 +64,19 @@ AliTRDv0::AliTRDv0(const char *name, const char *title) // Standard constructor for Transition Radiation Detector version 0 // - fIdSens = 0; fHitsOn = 0; - fIdSpace1 = 0; - fIdSpace2 = 0; - fIdSpace3 = 0; +} - fIdChamber1 = 0; - fIdChamber2 = 0; - fIdChamber3 = 0; +//_____________________________________________________________________________ +AliTRDv0::~AliTRDv0() +{ + // + // AliTRDv0 destructor + // } - + //_____________________________________________________________________________ void AliTRDv0::CreateGeometry() { @@ -69,26 +84,14 @@ void AliTRDv0::CreateGeometry() // Create the GEANT geometry for the Transition Radiation Detector - Version 0 // This version covers the full azimuth. // - // Author: Christoph Blume (C.Blume@gsi.de) 20/07/99 - // - - Float_t xpos, ypos, zpos; // Check that FRAME is there otherwise we have no place where to put the TRD - AliModule* FRAME = gAlice->GetModule("FRAME"); - if (!FRAME) return; + AliModule* frame = gAlice->GetModule("FRAME"); + if (!frame) return; // Define the chambers AliTRD::CreateGeometry(); - // Position the the TRD-sectors in all TRD-volumes in the spaceframe - xpos = 0.; - ypos = 0.; - zpos = 0.; - gMC->Gspos("TRD ",1,"BTR1",xpos,ypos,zpos,0,"ONLY"); - gMC->Gspos("TRD ",2,"BTR2",xpos,ypos,zpos,0,"ONLY"); - gMC->Gspos("TRD ",3,"BTR3",xpos,ypos,zpos,0,"ONLY"); - } //_____________________________________________________________________________ @@ -106,27 +109,15 @@ void AliTRDv0::CreateMaterials() void AliTRDv0::Init() { // - // Initialise Transition Radiation Detector after geometry is built + // Initialize Transition Radiation Detector after geometry is built // AliTRD::Init(); + printf(" Fast simulator\n\n"); for (Int_t i = 0; i < 80; i++) printf("*"); printf("\n"); - // Identifier of the sensitive volume (amplification region) - fIdSens = gMC->VolId("UL06"); - - // Identifier of the TRD-spaceframe volumina - fIdSpace1 = gMC->VolId("B028"); - fIdSpace2 = gMC->VolId("B029"); - fIdSpace3 = gMC->VolId("B030"); - - // Identifier of the TRD-driftchambers - fIdChamber1 = gMC->VolId("UCIO"); - fIdChamber2 = gMC->VolId("UCIM"); - fIdChamber3 = gMC->VolId("UCII"); - } //_____________________________________________________________________________ @@ -138,64 +129,55 @@ void AliTRDv0::StepManager() // crosses the border between amplification region and pad plane. // - Int_t vol[3]; - Int_t iIdSens, icSens; - Int_t iIdSpace, icSpace; - Int_t iIdChamber, icChamber; + Int_t pla = 0; + Int_t cha = 0; + Int_t sec = 0; - Int_t secMap1[10] = { 3, 7, 8, 9, 10, 11, 2, 1, 18, 17 }; - Int_t secMap2[ 5] = { 16, 15, 14, 13, 12 }; - Int_t secMap3[ 3] = { 5, 6, 4 }; - - Float_t hits[4]; + Float_t hits[3]; + Int_t det; TLorentzVector p; - TClonesArray &lhits = *fHits; + + // Use pad plane as sensitive volume + TString cIdSens = "L"; + TString cIdCurrent; + Char_t cIdChamber[3]; + cIdChamber[2] = 0; + + const Int_t kNplan = AliTRDgeometry::Nplan(); // Writing out hits enabled? if (!(fHitsOn)) return; // Use only charged tracks and count them only once per volume if (gMC->TrackCharge() && - gMC->IsTrackExiting()) { + gMC->IsTrackEntering()) { // Check on sensitive volume - iIdSens = gMC->CurrentVolID(icSens); - if (iIdSens == fIdSens) { + cIdCurrent = gMC->CurrentVolName(); + if (cIdSens == cIdCurrent[1]) { gMC->TrackPosition(p); for (Int_t i = 0; i < 3; i++) hits[i] = p[i]; - // No charge created - hits[3] = 0; - - iIdSpace = gMC->CurrentVolOffID(4,icSpace ); - iIdChamber = gMC->CurrentVolOffID(1,icChamber); - - // The sector number - if (iIdSpace == fIdSpace1) - vol[0] = secMap1[icSpace-1]; - else if (iIdSpace == fIdSpace2) - vol[0] = secMap2[icSpace-1]; - else if (iIdSpace == fIdSpace3) - vol[0] = secMap3[icSpace-1]; - - // The chamber number - // 1: outer left - // 2: middle left - // 3: inner - // 4: middle right - // 5: outer right - if (iIdChamber == fIdChamber1) - vol[1] = (hits[2] < 0 ? 1 : 5); - else if (iIdChamber == fIdChamber2) - vol[1] = (hits[2] < 0 ? 2 : 4); - else if (iIdChamber == fIdChamber3) - vol[1] = 3; - - // The plane number - vol[2] = icChamber - TMath::Nint((Float_t) (icChamber / 7)) * 6; - - new(lhits[fNhits++]) AliTRDhit(fIshunt,gAlice->CurrentTrack(),vol,hits); + + // The sector number (0 - 17) + // The numbering goes clockwise and starts at y = 0 + Float_t phi = kRaddeg*TMath::ATan2(hits[0],hits[1]); + if (phi < 90.) + phi = phi + 270.; + else + phi = phi - 90.; + sec = ((Int_t) (phi / 20)); + + // The plane and chamber number + cIdChamber[0] = cIdCurrent[2]; + cIdChamber[1] = cIdCurrent[3]; + Int_t idChamber = atoi(cIdChamber); + cha = ((Int_t) idChamber / kNplan); + pla = ((Int_t) idChamber % kNplan); + det = fGeometry->GetDetector(pla,cha,sec); + + AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),det,hits,0,kTRUE); }