X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PMD%2FAliPMD.cxx;h=6d672eca82f6daa4fdaf63676855cfec50c1a2ec;hb=7eb2b2df66bd5fc99c7897bd2a7d3530d8517f94;hp=358991e624d5e8021a1bb423c97d13dd91a1868d;hpb=1439f98e64c177f2d0122bfcc85e4162b29f1f2f;p=u%2Fmrichter%2FAliRoot.git diff --git a/PMD/AliPMD.cxx b/PMD/AliPMD.cxx index 358991e624d..6d672eca82f 100644 --- a/PMD/AliPMD.cxx +++ b/PMD/AliPMD.cxx @@ -1,3 +1,20 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ + /////////////////////////////////////////////////////////////////////////////// // // // @@ -22,12 +39,23 @@ /////////////////////////////////////////////////////////////////////////////// #include +#include +#include #include +#include +#include + +#include "AliLog.h" +#include "AliLoader.h" +#include "AliPMDLoader.h" #include "AliPMD.h" #include "AliRun.h" -#include "AliMC.h" -#include "AliConst.h" - +#include "AliMC.h" +#include "AliPMDDigitizer.h" +#include "AliPMDhit.h" +#include "AliPMDDDLRawData.h" +#include "AliPMDRawToSDigits.h" + ClassImp(AliPMD) //_____________________________________________________________________________ @@ -36,7 +64,27 @@ AliPMD::AliPMD() // // Default constructor // - fIshunt = 0; + fIshunt = 0; + fPar[0] = 1.; + fPar[1] = 1.; + fPar[2] = 0.8; + fPar[3] = 0.02; + fIn[0] = 6.; + fIn[1] = 20.; + fIn[2] = 600.; + fIn[3] = 27.; + fIn[4] = 27.; + fGeo[0] = 0.; + fGeo[1] = 0.2; + fGeo[2] = 4.; + fPadSize[0] = 0.8; + fPadSize[1] = 1.0; + fPadSize[2] = 1.2; + fPadSize[3] = 1.5; + fNumPads[0] = 0; + fNumPads[1] = 0; + fNumPads[2] = 0; + fNumPads[3] = 0; } //_____________________________________________________________________________ @@ -50,25 +98,56 @@ AliPMD::AliPMD(const char *name, const char *title) // // Allocate the array of hits fHits = new TClonesArray("AliPMDhit", 405); + gAlice->GetMCApp()->AddHitList(fHits); + + + fIshunt = 0; - fIshunt = 1; - - fPar[0] = 1; - fPar[1] = 1; - fPar[2] = 0.8; - fPar[3] = 0.02; - fIn[0] = 6; - fIn[1] = 20; - fIn[2] = 600; - fIn[3] = 27; - fIn[4] = 27; - fGeo[0] = 0; - fGeo[1] = 0.2; - fGeo[2] = 4; + fPar[0] = 1.; + fPar[1] = 1.; + fPar[2] = 0.8; + fPar[3] = 0.02; + fIn[0] = 6.; + fIn[1] = 20.; + fIn[2] = 600.; + fIn[3] = 27.; + fIn[4] = 27.; + fGeo[0] = 0.; + fGeo[1] = 0.2; + fGeo[2] = 4.; fPadSize[0] = 0.8; fPadSize[1] = 1.0; fPadSize[2] = 1.2; fPadSize[3] = 1.5; + fNumPads[0] = 0; + fNumPads[1] = 0; + fNumPads[2] = 0; + fNumPads[3] = 0; +} + +AliLoader* AliPMD::MakeLoader(const char* topfoldername) +{ + // Makes PMD Loader + + fLoader = new AliPMDLoader(GetName(),topfoldername); + + if (fLoader) + { + AliDebug(100,"Success"); + } + else + { + AliError("Failure"); + } + + return fLoader; +} + +AliPMD::~AliPMD() +{ + // + // Destructor + // } //_____________________________________________________________________________ @@ -79,11 +158,13 @@ void AliPMD::AddHit(Int_t track, Int_t *vol, Float_t *hits) // TClonesArray &lhits = *fHits; AliPMDhit *newcell, *curcell; -// printf("PMD++ Adding energy %f, prim %d, vol %d %d %d %d\n", -// hits[3],gAlice->GetPrimary(track-1),vol[0],vol[1],vol[2],vol[3]); + // printf("PMD++ Adding energy %f, prim %d, vol %d %d %d %d %d %d %d %d\n", + // hits[3],gAlice->GetPrimary(track-1),vol[0],vol[1],vol[2],vol[3], + // vol[4],vol[5],vol[6],vol[7]); + newcell = new AliPMDhit(fIshunt, track, vol, hits); - Int_t i; - for (i=0; iGetGeometry()->GetNode("alice"); - - // PMD - new TBRIK("S_PMD","PMD box","void",300,300,5); - Top->cd(); - Node = new TNode("PMD","PMD","S_PMD",0,0,600,""); - Node->SetLineColor(kColorPMD); - fNodes->Add(Node); -} - -//_____________________________________________________________________________ -Int_t AliPMD::DistancetoPrimitive(Int_t , Int_t ) -{ - // - // Distance from mouse to detector on the screen - // dummy routine - // - return 9999; -} - //_____________________________________________________________________________ void AliPMD::SetPAR(Float_t p1, Float_t p2, Float_t p3,Float_t p4) { @@ -186,32 +236,117 @@ void AliPMD::StepManager() // } -/////////////////////////////////////////////////////////////////////////////// -// // -// Photon Multiplicity Detector Version 1 // -// // -//Begin_Html -/* - -*/ -//End_Html -// // -/////////////////////////////////////////////////////////////////////////////// +void AliPMD::MakeBranch(Option_t* option) +{ + // Create Tree branches for the PMD + + const char *cH = strstr(option,"H"); + if (cH && fLoader->TreeH() && (fHits == 0x0)) + fHits = new TClonesArray("AliPMDhit", 405); + + AliDetector::MakeBranch(option); +} -ClassImp(AliPMDhit) - -//_____________________________________________________________________________ -AliPMDhit::AliPMDhit(Int_t shunt,Int_t track, Int_t *vol, Float_t *hits): - AliHit(shunt, track) + +void AliPMD::SetTreeAddress() { - // - // Add a PMD hit - // - Int_t i; - for (i=0;i<5;i++) fVolume[i] = vol[i]; - fX=hits[0]; - fY=hits[1]; - fZ=hits[2]; - fEnergy=hits[3]; + // Set branch address + + if (fLoader->TreeH() && fHits==0x0) + fHits = new TClonesArray("AliPMDhit", 405); + + AliDetector::SetTreeAddress(); } - + +void AliPMD::SetCpvOff() +{ + // Set the CPV plane off +} +void AliPMD::SetPreOff() +{ + // Set the Preshower plane off + +} +void AliPMD::SetModuleOff(Int_t /*imodule*/) +{ + // Set the desired module off + +} + +//____________________________________________________________________________ +void AliPMD::Hits2SDigits() +{ +// create summable digits + + AliRunLoader* runLoader = fLoader->GetRunLoader(); + AliPMDDigitizer* pmdDigitizer = new AliPMDDigitizer; + pmdDigitizer->OpengAliceFile(fLoader->GetRunLoader()->GetFileName().Data(), + "HS"); + pmdDigitizer->SetZPosition(361.5); + + for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) { + pmdDigitizer->Hits2SDigits(iEvent); + } + fLoader->UnloadHits(); + fLoader->UnloadSDigits(); + delete pmdDigitizer; +} +//____________________________________________________________________________ +void AliPMD::SDigits2Digits() +{ + // creates sdigits to digits +} +//____________________________________________________________________________ +void AliPMD::Hits2Digits() +{ +// create digits + + AliRunLoader* runLoader = fLoader->GetRunLoader(); + AliPMDDigitizer* pmdDigitizer = new AliPMDDigitizer; + pmdDigitizer->OpengAliceFile(fLoader->GetRunLoader()->GetFileName().Data(), + "HD"); + pmdDigitizer->SetZPosition(361.5); + + for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) { + pmdDigitizer->Hits2Digits(iEvent); + } + fLoader->UnloadHits(); + fLoader->UnloadDigits(); + delete pmdDigitizer; + +} +// --------------------------------------------------------------------------- +AliDigitizer* AliPMD::CreateDigitizer(AliDigitizationInput* digInput) const +{ + return new AliPMDDigitizer(digInput); +} +// --------------------------------------------------------------------------- +void AliPMD::Digits2Raw() +{ +// convert digits of the current event to raw data + + fLoader->LoadDigits(); + TTree* digits = fLoader->TreeD(); + if (!digits) { + AliError("No digits tree"); + return; + } + + AliPMDDDLRawData rawWriter; + rawWriter.WritePMDRawData(digits); + + fLoader->UnloadDigits(); +} + +Bool_t AliPMD::Raw2SDigits(AliRawReader *rawReader) +{ + // converts raw to sdigits + AliRunLoader* runLoader = fLoader->GetRunLoader(); + //runLoader->GetEvent(ievt); + + AliPMDRawToSDigits pmdr2sd; + pmdr2sd.Raw2SDigits(runLoader, rawReader); + fLoader->UnloadSDigits(); + return kTRUE; +} +