TPCbase TPCsim TPCrec TPCfast \
ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase \
TRDsim TRDrec TRDfast \
- FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec CRT \
+ FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec ACORDE \
HMPIDbase HMPIDrec HMPIDsim \
ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec \
EMCALbase EMCALsim EMCALrec EMCALjet \
FMD/tgt_$(ALICE_TARGET)/G__FMDbase.o $(LIBPATH)/libFMDbase.a \
FMD/tgt_$(ALICE_TARGET)/G__FMDsim.o $(LIBPATH)/libFMDsim.a \
FMD/tgt_$(ALICE_TARGET)/G__FMDrec.o $(LIBPATH)/libFMDrec.a \
- CRT/tgt_$(ALICE_TARGET)/G__CRT.o $(LIBPATH)/libCRT.a \
+ ACORDE/tgt_$(ALICE_TARGET)/G__ACORDE.o $(LIBPATH)/libACORDE.a \
HMPID/tgt_$(ALICE_TARGET)/G__HMPIDbase.o $(LIBPATH)/libHMPIDbase.a \
HMPID/tgt_$(ALICE_TARGET)/G__HMPIDsim.o $(LIBPATH)/libHMPIDsim.a \
HMPID/tgt_$(ALICE_TARGET)/G__HMPIDrec.o $(LIBPATH)/libHMPIDrec.a \
TPCbase TPCsim TPCrec TPCfast \
ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase \
TRDsim TRDrec TRDfast \
- FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec CRT \
+ FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec ACORDE \
HMPIDbase HMPIDrec HMPIDsim \
ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec \
EMCALbase EMCALsim EMCALrec EMCALjet \
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-///////////////////////////////////////////////////////////////////////////////
-// //
-// Cosmic Rays ALICE Trigger //
-// This class contains the basic functions for the Cosmic Ray ALICE //
-// detector. Functions specific to one particular geometry are //
-// contained in the derived classes //
-//
-// Begin_Html
-/*
-<img src="picts/AliCRTClass.gif">
-</pre>
-<p>The responsible person for this module is
-<a href="mailto:Enrique.Gamez.Flores@cern.ch">Enrique Gamez Flores</a>.
-</font>
-<pre>
-*/
-//End_Html
-//
-//
-// //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AliCRT.h"
-
-#include <TTree.h>
-#include <TVirtualMC.h>
-
-#include "AliRun.h"
-#include "AliMagF.h"
-//#include "AliMC.h"
-
-//#include "AliCRThit.h"
-#include "AliCRTModule.h"
-
-ClassImp(AliCRT)
-
-//_____________________________________________________________________________
-AliCRT::AliCRT()
- : AliDetector(),
- fModule(0)
-{
- //
- // Default constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRT::AliCRT(const char *name, const char *title)
- : AliDetector(name, title),
- fModule(0)
-{
- //
- // Standard constructor
- //
- //fHits = new TClonesArray("AliCRThit", 400);
- //gAlice->GetMCApp()->AddHitList(fHits);
-}
-
-//_____________________________________________________________________________
-AliCRT::~AliCRT()
-{
- //
- // Default destructor
- //
- if ( fModule ) { delete fModule; fModule = 0; }
-}
-
-//_____________________________________________________________________________
-void AliCRT::CreateMaterials()
-{
- // Magnatic field inside the pit
- Int_t isxfld = gAlice->Field()->Integ();
- Float_t sxmgmx = gAlice->Field()->Max();
-
- //Magnetic field above the Magnet.
- Int_t xfield = 0; // no Magnetic field.
- Float_t xfieldm = 0;
- Float_t xepsil = 0.1; // Tracking precission in cm. obove the pit
-
- // --- Define the various materials for GEANT ---
- Float_t epsil, stmin, tmaxfd, deemax, stemax;
- //
- // Aluminum
- AliMaterial(9, "ALUMINIUM0$", 26.98, 13., 2.7, 8.9, 37.2);
- AliMaterial(29, "ALUMINIUM1$", 26.98, 13., 2.7, 8.9, 37.2);
- AliMaterial(49, "ALUMINIUM2$", 26.98, 13., 2.7, 8.9, 37.2);
- //
- // Iron
- AliMaterial(10, "IRON0$ ", 55.85, 26., 7.87, 1.76, 17.1);
- AliMaterial(30, "IRON1$ ", 55.85, 26., 7.87, 1.76, 17.1);
- AliMaterial(50, "IRON2$ ", 55.85, 26., 7.87, 1.76, 17.1);
- //
- // Air
- AliMaterial(15, "AIR0$ ", 14.61, 7.3, .001205, 30423.24, 67500.);
- AliMaterial(35, "AIR1$ ", 14.61, 7.3, .001205, 30423.24, 67500.);
- AliMaterial(55, "AIR2$ ", 14.61, 7.3, .001205, 30423.24, 67500.);
- AliMaterial(75, "AIR3$ ", 14.61, 7.3, .001205, 30423.24, 67500.);
- AliMaterial(95, "AIR4$ ", 14.61, 7.3, .001205, 30423.24, 67500.);
-
-
- // Scintillator material polystyrene
- Float_t aP[2] = {12.011, 1.00794};
- Float_t zP[2] = {6.0, 1.0};
- Float_t wP[2] = {1.0, 1.0};
- Float_t dP = 1.032;
- AliMixture(13, "Polystyrene$", aP, zP, dP, -2, wP);
- // Subalpine Molasse over the ALICE hall.
- Float_t aMolasse[10] = { 1., 12.01, 15.994, 22.99, 24.305, 26.98, 28.086, 39.1, 40.08, 55.85 };
- Float_t zMolasse[10] = {1., 6., 8., 11., 12., 13., 14., 19., 20., 26.};
- Float_t wMolasse[10] = {0.008, 0.043, 0.485, 0.007, 0.042, 0.037, 0.215, 0.023, 0.1, 0.04};
- Float_t dMolasse = 2.40;
- AliMixture(24, "Molasse$", aMolasse, zMolasse, dMolasse, 10, wMolasse);
-
- // ****************
- // Defines tracking media parameters.
- // Les valeurs sont commentees pour laisser le defaut
- // a GEANT (version 3-21, page CONS200), f.m.
- epsil = .001; // Tracking precision, Inside the pit
- stemax = -1.; // Maximum displacement for multiple scattering
- tmaxfd = -20.; // Maximum angle due to field deflection
- deemax = -.3; // Maximum fractional energy loss, DLS
- stmin = -.8;
- // ***************
-
- Float_t atmaxfd = 10.;
- Float_t adeemax = -0.1;
- Float_t aepsil = 0.1;
- Float_t astmin = -10.;
-
- //
- // Aluminum
- AliMedium(9, "ALU_C0 ", 9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(29, "ALU_C1 ", 29, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(49, "ALU_C2 ", 49, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- //
- // Iron
- AliMedium(10, "FE_C0 ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(30, "FE_C1 ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(50, "FE_C2 ", 50, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- //
- // Air
- AliMedium(15, "AIR_C0 ", 15, 0, isxfld, sxmgmx, atmaxfd, stemax, adeemax, aepsil, astmin);
- AliMedium(35, "AIR_C1 ", 35, 0, isxfld, sxmgmx, atmaxfd, stemax, adeemax, aepsil, astmin);
- AliMedium(55, "AIR_C2 ", 55, 0, isxfld, sxmgmx, atmaxfd, stemax, adeemax, aepsil, astmin);
- AliMedium(75, "AIR_C4 ", 75, 0, isxfld, sxmgmx, atmaxfd, stemax, adeemax, aepsil, astmin);
- AliMedium(95, "AIR_C5 ", 95, 0, isxfld, sxmgmx, atmaxfd, stemax, adeemax, aepsil, astmin);
-
-
-
- // The scintillator of the CPV made of Polystyrene
- // scintillator -> idtmed[1112]
- AliMedium(12 , "CPV scint.0 ", 13, 1, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
- AliMedium(13 , "CPV scint.1 ", 13, 1, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
- AliMedium(14 , "CPV scint.2 ", 13, 1, isxfld, sxmgmx, 10., stemax, deemax, epsil, stmin);
-
- // Molasse -> idtmed[1123]
- AliMedium(24 , "Molasse ", 24, 0, xfield, xfieldm, tmaxfd, stemax, deemax, xepsil, stmin);
-
- // Concrete, in case if we need to put hte shafts by ourselves.
-
- Float_t aconc[10] = { 1.,12.01,15.994,22.99,24.305,26.98,28.086,39.1,40.08,55.85 };
- Float_t zconc[10] = { 1.,6.,8.,11.,12.,13.,14.,19.,20.,26. };
- Float_t wconc[10] = { .01,.001,.529107,.016,.002,.033872,.337021,.013,.044,.014 };
-
- AliMixture(17, "CONCRETE$", aconc, zconc, 2.35, 10, wconc);
- // Concrete
- AliMedium(17, "CC_C0 ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
- AliMedium(27, "CC_C1 ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); // MX24
- AliMedium(37, "CC_C2 ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); // PM25
- AliMedium(47, "CC_C3 ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); // PGC2
-
-}
-
-//_____________________________________________________________________________
-void AliCRT::SetTreeAddress()
-{
-
- TBranch *branch;
- char branchname[20];
- sprintf(branchname,"%s",GetName());
- // Branch address for hit tree
- TTree *treeH = fLoader->TreeH();
- if (treeH ) {
- branch = treeH->GetBranch(branchname);
- if (branch) branch->SetAddress(&fHits);
- }
-}
-
-//_____________________________________________________________________________
-void AliCRT::MakeBranch(Option_t* opt)
-{
- //
- // Initializes the branches of the CRT inside the trees written
- // for each event.
- //
- const char* oH = strstr(opt, "H");
- if ( fLoader->TreeH() && oH && (fHits == 0x0) ) {
- fHits = new TClonesArray("AliCRThit", 1000);
- fNhits = 0;
- }
- AliDetector::MakeBranch(opt);
-}
+++ /dev/null
-#ifndef ALICRT_H
-#define ALICRT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-////////////////////////////////////////////////
-// Manager class for detector: ACORDE //
-////////////////////////////////////////////////
-
-#include "AliDetector.h"
-
-class AliCRTModule;
-
-class AliCRT : public AliDetector {
-public:
- AliCRT();
- AliCRT(const char* name, const char* title);
- virtual ~AliCRT();
-
- virtual void CreateMaterials();
-
- virtual Int_t IsVersion() const { return -1; }
-
- virtual TString Version() { return TString(""); }
-
- virtual void SetTreeAddress();
- virtual void SetModule(AliCRTModule* module) {fModule = module;}
- virtual const AliCRTModule* GetModule() const {return fModule; }
- virtual void MakeBranch(Option_t* opt = "");
-
-protected:
- AliCRTModule* fModule;
-private:
- AliCRT(const AliCRT& crt);
- AliCRT& operator=(const AliCRT& crt);
-
- ClassDef(AliCRT, 1) // Cosmic Ray Trigger (ACORDE) base class
-};
-#endif // ALICRT_H
+++ /dev/null
- /**************************************************************************
- * 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$ */
-
-////////////////////////////////////////////////////////////////////////
-//
-// AliCRTConstants class
-//
-// This class serves to group constants needed by CRT detector in 1
-// easily accessible place. All constants are public const static data
-// members. The class is never instatiated.
-// Author: Arturo Fernandez, Enrique Gamez
-// FCFM-UAP, Mexico.
-//
-////////////////////////////////////////////////////////////////////////
-
-#include "AliCRTConstants.h"
-
-AliCRTConstants* AliCRTConstants::fgInstance = 0;
-
-const Float_t AliCRTConstants::fgkCageLenght = 477.6;
-const Float_t AliCRTConstants::fgkCageWidth = 166.7;
-const Float_t AliCRTConstants::fgkCageHeight = 10.7;
-const Float_t AliCRTConstants::fgkSinglePaletteLenght = 363.0;
-const Float_t AliCRTConstants::fgkSinglePaletteWidth = 19.7;
-const Float_t AliCRTConstants::fgkSinglePaletteHeight = 1;
-const Float_t AliCRTConstants::fgkActiveAreaGap = 0.7;
-const Float_t AliCRTConstants::fgkActiveAreaLenght = AliCRTConstants::fgkSinglePaletteLenght;
-const Float_t AliCRTConstants::fgkActiveAreaWidth = 156.7;
-const Float_t AliCRTConstants::fgkActiveAreaHeight = 2*AliCRTConstants::fgkSinglePaletteHeight + AliCRTConstants::fgkActiveAreaGap;
-const Float_t AliCRTConstants::fgkMagnetWidth = 654.4;
-const Float_t AliCRTConstants::fgkMagnetLenght = 1200;
-const Float_t AliCRTConstants::fgkMagMinRadius = 790;
-const Float_t AliCRTConstants::fgkMagMaxRadius = AliCRTConstants::fgkMagMinRadius + 20;
-const Float_t AliCRTConstants::fgkDepth =4420; // cm
-
-ClassImp(AliCRTConstants)
-
-//_____________________________________________________________________________
-AliCRTConstants::AliCRTConstants()
- : TObject()
-{
- // Default constructor
-}
-
-//_____________________________________________________________________________
-AliCRTConstants::AliCRTConstants(const AliCRTConstants& ct)
- : TObject(ct)
-{
- // Copy constructor
-}
-
-//_____________________________________________________________________________
-AliCRTConstants& AliCRTConstants::operator=(const AliCRTConstants&)
-{
- // Asingment operator
- return *this;
-}
-
-//_____________________________________________________________________________
-AliCRTConstants* AliCRTConstants::Instance()
-{
- if ( !fgInstance ) {
- fgInstance = new AliCRTConstants;
- }
- return fgInstance;
-}
-
-//_____________________________________________________________________________
-AliCRTConstants::~AliCRTConstants()
-{
- fgInstance = 0;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::CageLenght() const
-{
- // Module lenght
- return fgkCageLenght;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::CageWidth() const
-{
- // Module width
- return fgkCageWidth;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::CageHeight() const
-{
- // Module height
- return fgkCageHeight;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::SinglePaletteLenght() const
-{
- // Lenght of the scintillator active zone for a single counter
- return fgkSinglePaletteLenght;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::SinglePaletteWidth() const
-{
- // Width of the scintillator active zone for a single counter
- return fgkSinglePaletteWidth;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::SinglePaletteHeight() const
-{
- // Height of the scintillator active zone for a single counter
- return fgkSinglePaletteHeight;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::ActiveAreaGap() const
-{
- // Gap betwen scintillators
- return fgkActiveAreaGap;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::ActiveAreaLenght() const
-{
- // Lenght of the scintillator active zone
- return fgkActiveAreaLenght;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::ActiveAreaWidth() const
-{
- // Width of the scintillator active zone
- return fgkActiveAreaWidth;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::ActiveAreaHeight() const
-{
- // Height of the scintillator active zone
- return fgkActiveAreaHeight;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::MagnetWidth() const
-{
- // Magnet width
- return fgkMagnetWidth;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::MagnetLenght() const
-{
- // Magnet lenght
- return fgkMagnetLenght;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::MagMinRadius() const
-{
- // Magnet Inner radius
- return fgkMagMinRadius;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::MagMaxRadius() const
-{
- // Magnet outer radius
- return fgkMagMaxRadius;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRTConstants::Depth() const
-{
- // Alice IP depth
- return fgkDepth;
-}
+++ /dev/null
-#ifndef ALICRTCONSTANTS_H
-#define ALICRTCONSTANTS_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-////////////////////////////////////////////////////////////////////////
-//
-// AliCRTConstants class
-//
-// This class serves to group constants needed by ACORDE detector in 1
-// easily accessible place. All constants are public const static data
-// members. The class is never instatiated.
-//
-// Author: Arturo Fernandez, Enrique Gamez
-// FCFM-UAP, Mexico.
-//
-/////////////////////////////////////////////////////////////////////////
-
-#include <TObject.h>
-
-enum ECRMode {
- kSingleMuons,
- kMuonBundle,
- kMuonFlux
-};
-
-class AliCRTConstants : public TObject {
-public:
- virtual ~AliCRTConstants();
-
- static AliCRTConstants* Instance();
-
- Float_t CageLenght() const;
- Float_t CageWidth() const;
- Float_t CageHeight() const;
-
- Float_t SinglePaletteLenght() const;
- Float_t SinglePaletteWidth() const;
- Float_t SinglePaletteHeight() const;
-
- Float_t ActiveAreaGap() const;
- Float_t ActiveAreaLenght() const;
- Float_t ActiveAreaWidth() const;
- Float_t ActiveAreaHeight() const;
-
- Float_t MagnetWidth() const;
- Float_t MagnetLenght() const;
- Float_t MagMinRadius() const;
- Float_t MagMaxRadius() const;
-
- Float_t Depth() const;
-
-protected:
- AliCRTConstants();
- AliCRTConstants(const AliCRTConstants& ct);
- AliCRTConstants& operator=(const AliCRTConstants& ct);
-
- static AliCRTConstants* fgInstance; // static instanton
-
- static const Float_t fgkCageLenght; // Cage lenght
- static const Float_t fgkCageWidth; // Cage width
- static const Float_t fgkCageHeight; // Cage height
-
- static const Float_t fgkSinglePaletteLenght; // Palette lenght
- static const Float_t fgkSinglePaletteWidth; // Palette width
- static const Float_t fgkSinglePaletteHeight; // Palette height
-
- static const Float_t fgkActiveAreaGap; // Scintillator active area
-
- static const Float_t fgkActiveAreaLenght; // Active area lenght
- static const Float_t fgkActiveAreaWidth; // Active area width
- static const Float_t fgkActiveAreaHeight; // Active area height
-
- static const Float_t fgkMagnetWidth; // Magnet widht
- static const Float_t fgkMagnetLenght; // Magnet lenght
- static const Float_t fgkMagMinRadius; // Magnet inside radius
- static const Float_t fgkMagMaxRadius; // Magnet outer radius
-
- static const Float_t fgkDepth; // Alice IP depth from surface
-
- private:
- ClassDef(AliCRTConstants, 0) // CRT(ACORDE) global constants
-};
-#endif // ALICRTCONSTANTS_H
+++ /dev/null
-/**************************************************************************
- * 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: */
-
-////////////////////////////////////////////////////////////////////////////
-//
-// ALICE Cosmic Ray Trigger
-//
-// This class will provide the basic utilities to create the geometry of
-// the scintillatio array. This array is basically only the array
-// in the upper face of the magnet. The remaining arrays will be copies
-// of this array.
-//
-// Authors:
-//
-// Arturo Fernandez <afernand@fcfm.buap.mx>
-// Enrique Gamez <egamez@fcfm.buap.mx>
-//
-////////////////////////////////////////////////////////////////////////////
-
-#include "AliCRTModule.h"
-
-ClassImp(AliCRTModule)
-
-//_____________________________________________________________________________
-AliCRTModule::AliCRTModule()
- : TNamed(),
- fScintillatorThickness(0),
- fScintillatorWidth(0),
- fScintillatorLength(0),
- fFrameThickness(0),
- fFrameWidth(0),
- fFrameLength(0),
- fNColumns(0),
- fNRows(0),
- fZGap(0),
- fXGap(0)
-{
- //
- // Default constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTModule::AliCRTModule(const char* name, const char* title)
- : TNamed(name, title),
- fScintillatorThickness(1),
- fScintillatorWidth(19.7),
- fScintillatorLength(186),
- fFrameThickness(10),
- fFrameWidth(26),
- fFrameLength(300),
- fNColumns(2),
- fNRows(10),
- fZGap(100),
- fXGap(0)
-{
- //
- // Standard constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTModule::AliCRTModule(const AliCRTModule& mod)
- : TNamed(mod),
- fScintillatorThickness(mod.fScintillatorThickness),
- fScintillatorWidth(mod.fScintillatorWidth),
- fScintillatorLength(mod.fScintillatorLength),
- fFrameThickness(mod.fFrameThickness),
- fFrameWidth(mod.fFrameWidth),
- fFrameLength(mod.fFrameLength),
- fNColumns(mod.fNColumns),
- fNRows(mod.fNRows),
- fZGap(mod.fZGap),
- fXGap(mod.fXGap)
-{
- //
- // Copy constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTModule::~AliCRTModule()
-{
- //
- // Default destructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTModule& AliCRTModule::operator=(const AliCRTModule& mod)
-{
- //
- // Asingment operator
- //
- fScintillatorThickness = mod.fScintillatorThickness;
- fScintillatorWidth = mod.fScintillatorWidth;
- fScintillatorLength = mod.fScintillatorLength;
- fFrameThickness = mod.fFrameThickness;
- fFrameWidth = mod.fFrameWidth;
- fFrameLength = mod.fFrameLength;
- fNColumns = mod.fNColumns;
- fNRows = mod.fNRows;
- fZGap = mod.fZGap;
- fXGap = mod.fXGap;
- return *this;
-}
+++ /dev/null
-#ifndef ALICRTMODULE_H
-#define ALICRTMODULE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id: */
-/////////////////////////////////
-// CRT module geometry manager //
-/////////////////////////////////
-
-#include <TNamed.h>
-
-class AliCRTModule : public TNamed {
-public:
- AliCRTModule();
- AliCRTModule(const char* name, const char* title);
- AliCRTModule(const AliCRTModule& mod);
- virtual ~AliCRTModule();
-
- AliCRTModule& operator=(const AliCRTModule& mod);
-
- void SetScintillatorThickness(Float_t thickness);
- void SetScintillatorWidth(Float_t width);
- void SetScintillatorLenght(Float_t length);
-
- void SetFrameThickness(Float_t thickness);
- void SetFrameWidth(Float_t width);
- void SetFrameLength(Float_t length);
-
- void SetNumberOfColumns(Int_t ncols);
- void SetNumberOfRows(Int_t nrows);
-
- void SetZGap(Float_t zgap);
- void SetXGap(Float_t xgap);
-
- Float_t ScintillatorThickness() const;
- Float_t ScintillatorWidth() const;
- Float_t ScintillatorLenght() const;
-
- Float_t FrameThickness() const;
- Float_t FrameWidth() const;
- Float_t FrameLength() const;
-
- Int_t NumberOfModules() const;
- Int_t NumberOfColumns() const;
- Int_t NumberOfRows() const;
-
- Float_t ZGap() const;
- Float_t XGap() const;
-
-private:
- Float_t fScintillatorThickness; // Scintillator thickness
- Float_t fScintillatorWidth; // Scintillator width
- Float_t fScintillatorLength; // Scintillator length
- Float_t fFrameThickness; // Aluminium frame thickness
- Float_t fFrameWidth; // Aluminium frame width
- Float_t fFrameLength; // Aliuminium frame length
- Int_t fNColumns;//Number of modules per column per magnet face (z coordinate)
- Int_t fNRows; // Number of module rows per magnet face (x coordinate)
- Float_t fZGap; // Gap in Z betwen modules
- Float_t fXGap; // Gap in X betwen modules
- ClassDef(AliCRTModule, 1)// CRT module geometry manager
-};
-
-inline void AliCRTModule::SetScintillatorThickness(Float_t thick)
-{ fScintillatorThickness = thick; }
-
-inline void AliCRTModule::SetScintillatorWidth(Float_t width)
-{ fScintillatorWidth = width; }
-
-inline void AliCRTModule::SetScintillatorLenght(Float_t length)
-{ fScintillatorLength = length; }
-
-inline void AliCRTModule::SetFrameThickness(Float_t thick)
-{ fFrameThickness = thick; }
-
-inline void AliCRTModule::SetFrameWidth(Float_t width)
-{ fFrameWidth = width; }
-
-inline void AliCRTModule::SetFrameLength(Float_t length)
-{ fFrameLength = length; }
-
-inline void AliCRTModule::SetNumberOfColumns(Int_t ncols)
-{ fNColumns = ncols; }
-
-inline void AliCRTModule::SetNumberOfRows(Int_t nrows)
-{ fNRows = nrows; }
-
-inline void AliCRTModule::SetZGap(Float_t zgap)
-{ fZGap = zgap; }
-
-inline void AliCRTModule::SetXGap(Float_t xgap)
-{ fXGap = xgap; }
-
-inline Float_t AliCRTModule::ScintillatorThickness() const
-{ return fScintillatorThickness; }
-
-inline Float_t AliCRTModule::ScintillatorWidth() const
-{ return fScintillatorWidth; }
-
-inline Float_t AliCRTModule::ScintillatorLenght() const
-{ return fScintillatorLength; }
-
-inline Float_t AliCRTModule::FrameThickness() const
-{ return fFrameThickness; }
-
-inline Float_t AliCRTModule::FrameWidth() const
-{ return fFrameWidth; }
-
-inline Float_t AliCRTModule::FrameLength() const
-{ return fFrameLength; }
-
-inline Int_t AliCRTModule::NumberOfModules() const
-{ return fNColumns*fNRows; }
-
-inline Int_t AliCRTModule::NumberOfColumns() const
-{ return fNColumns; }
-
-inline Int_t AliCRTModule::NumberOfRows() const
-{ return fNRows; }
-
-inline Float_t AliCRTModule::ZGap() const
-{ return fZGap; }
-
-inline Float_t AliCRTModule::XGap() const
-{ return fXGap; }
-#endif // ALICRTMODULE_H
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-////////////////////////////////////////////////////////////////////////////
-// CRT digit: Id
-//
-// The digits are made in FinishEvent() by summing all the hits in a
-// counter.
-// The main parts of the code need to be written.
-//
-////////////////////////////////////////////////////////////////////////////
-
-#include "AliCRTdigit.h"
-
-#include <TArrayF.h>
-#include <TArrayI.h>
-
-ClassImp(AliCRTdigit)
-
-//_____________________________________________________________________________
-AliCRTdigit::AliCRTdigit()
- : AliDigit(),
- fSector(0),
- fPlate(0),
- fStrip(0),
- fPadx(0),
- fPadz(0),
- fNDigits(0),
- fTdc(0),
- fAdc(0)
-{
- //
- // Default constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTdigit::AliCRTdigit(Int_t* tracks, Int_t *vol, Float_t *digit)
- : AliDigit(tracks),
- fSector(vol[0]),
- fPlate(vol[1]),
- fStrip(vol[2]),
- fPadx(vol[3]),
- fPadz(vol[4]),
- fNDigits(1),
- fTdc(new TArrayF(fNDigits)),
- fAdc(new TArrayF(fNDigits))
-{
-
- //
- // Creates CRT digit
- // The creator for the AliCRTdigit class. This routine fills the
- // AliCRTdigit data members from the array digits.
- //
- (*fTdc)[0] = digit[0];
- (*fAdc)[0] = digit[1];
-}
-
-//_____________________________________________________________________________
-AliCRTdigit::AliCRTdigit(const AliCRTdigit& digit)
- : AliDigit(digit),
- fSector(digit.fSector),
- fPlate(digit.fPlate),
- fStrip(digit.fStrip),
- fPadx(digit.fPadx),
- fPadz(digit.fPadz),
- fNDigits(digit.fNDigits),
- fTdc(digit.fTdc),
- fAdc(digit.fAdc)
-{
- //
- //-- Copy constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTdigit::~AliCRTdigit()
-{
- //
- //
- //
- if ( fAdc ) { delete fAdc; fAdc = 0; }
- if ( fTdc ) { delete fTdc; fTdc = 0; }
-}
-
-//_____________________________________________________________________________
-AliCRTdigit& AliCRTdigit::operator=(const AliCRTdigit& digit)
-{
- //
- //-- Asingment operator.
- //
- fSector = digit.fSector;
- fPlate = digit.fPlate;
- fStrip = digit.fStrip;
- fPadx = digit.fPadx;
- fPadz = digit.fPadz;
- fNDigits = digit.fNDigits;
- fTdc = digit.fTdc;
- fAdc = digit.fAdc;
- return *this;
-}
+++ /dev/null
-#ifndef ALICRTDIGIT_H
-#define ALICRTDIGIT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-////////////////////////////////////////////////////////////////////////////
-// CRT digit: Id
-//
-// The digits are made in FinishEvent() by summing all the hits in a
-// counter.
-////////////////////////////////////////////////////////////////////////////
-
-#include "AliDigit.h"
-
-class TArrayF;
-class TArrayI;
-
-class AliCRTdigit: public AliDigit {
-public:
- AliCRTdigit();
- AliCRTdigit(Int_t* tracks, Int_t* vol, Float_t* digit);
- AliCRTdigit(const AliCRTdigit& digit);
- virtual ~AliCRTdigit();
-
- AliCRTdigit& operator= (const AliCRTdigit& digit);
-
-protected:
- Int_t fSector; // number of sector
- Int_t fPlate; // number of plate
- Int_t fStrip; // number of strip
- Int_t fPadx; // number of pad along x
- Int_t fPadz; // number of pad along z
- Int_t fNDigits; // dimension of fTdc array
- TArrayF* fTdc; // tdc values for sdigit
- TArrayF* fAdc; // adc values for sdigit
-
-private:
- ClassDef(AliCRTdigit,1) //Digit (Header) object for set : CRT (ACORDE)
-};
-#endif // ALICRTDIGIT_H
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-#include "AliCRThit.h"
-
-#include <TMath.h>
-
-#include "AliConst.h"
-
-ClassImp(AliCRThit)
-
-//____________________________________________________________________________
-AliCRThit::AliCRThit()
- : AliHit(),
- fId(0),
- fPx(0),
- fPy(0),
- fPz(0),
- fEloss(0),
- fMedium(0)
-{
- //
- // default ctor for AliCRThit object
- //
-}
-
-//_____________________________________________________________________________
-AliCRThit::AliCRThit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
- : AliHit(shunt, track),
- fId(hits[0]),
- fPx(hits[4]),
- fPy(hits[5]),
- fPz(hits[6]),
- fEloss(hits[7]),
- fMedium(vol[0])
-{
- //
- // Constructor of hit object
- //
- fX = hits[1];
- fY = hits[2];
- fZ = hits[3];
-}
-
-//____________________________________________________________________________
-AliCRThit::AliCRThit(const AliCRThit & hit)
- : AliHit(hit),
- fId(hit.fId),
- fPx(hit.fPx),
- fPy(hit.fPy),
- fPz(hit.fPz),
- fEloss(hit.fEloss),
- fMedium(hit.fMedium)
-{
- //
- // copy ctor
- //
- fX = hit.fX;
- fY = hit.fY;
- fZ = hit.fZ;
-}
-
-//_____________________________________________________________________________
-AliCRThit::~AliCRThit()
-{
- //
- // Default destructor.
- //
-}
-
-//_____________________________________________________________________________
-AliCRThit& AliCRThit::operator=(const AliCRThit & hit)
-{
- //
- // aisngment operator.
- //
- fId = hit.fId;
- fX = hit.fX;
- fY = hit.fY;
- fZ = hit.fZ;
- fPx = hit.fPx;
- fPy = hit.fPy;
- fPz = hit.fPz;
- fEloss = hit.fEloss;
- fMedium = hit.fMedium;
- return *this;
-}
-
-//_____________________________________________________________________________
-Float_t AliCRThit::Energy() const
-{
- //
- //
- //
- return TMath::Sqrt(fPx*fPx + fPy*fPy + fPz*fPz);
-}
-
-//_____________________________________________________________________________
-Float_t AliCRThit::PolarAngle() const
-{
- //
- //
- //
- return kRaddeg*TMath::ACos(-fPy/this->Energy());
-}
-
-//_____________________________________________________________________________
-Float_t AliCRThit::AzimuthAngle() const
-{
- //
- //
- //
- return kRaddeg*TMath::ATan2(-fPx, -fPz);
-}
-
-//_____________________________________________________________________________
-Bool_t AliCRThit::operator==(const AliCRThit& hit)
-{
- //
- //
- //
- Float_t energy = TMath::Sqrt(fPx*fPx + fPy*fPy + fPz*fPz);
- Float_t energy2=TMath::Sqrt(hit.fPx*hit.fPx+hit.fPy*hit.fPy+hit.fPz*hit.fPz);
- return (energy == energy2);
- //return (fTrack == hit.fTrack);
-}
-
-//_____________________________________________________________________________
-Bool_t AliCRThit::operator<(const AliCRThit& hit)
-{
- //
- //
- //
- Float_t energy = TMath::Sqrt(fPx*fPx + fPy*fPy + fPz*fPz);
- Float_t energy2=TMath::Sqrt(hit.fPx*hit.fPx+hit.fPy*hit.fPy+hit.fPz*hit.fPz);
- return (energy < energy2);
-}
+++ /dev/null
-#ifndef ALICRTHIT_H
-#define ALICRTHIT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-////////////////////////////////////////////////
-// //
-// Hit class for CRT //
-// Interface //
-// Getters, Setters and member variables //
-// declared here //
-// //
-////////////////////////////////////////////////
-
-#include "AliHit.h"
-
-class AliCRThit : public AliHit {
-public:
- AliCRThit();
- AliCRThit(Int_t shunt, Int_t track, Int_t* vol, Float_t *hits);
- AliCRThit(const AliCRThit& hit);
- virtual ~AliCRThit();
-
- AliCRThit& operator=(const AliCRThit& hit);
- Bool_t operator==(const AliCRThit& hit);
- Bool_t operator<(const AliCRThit& hit);
-
- Float_t ParticleId() const {return fId;}
- Float_t Px() const {return fPx;}
- Float_t Py() const {return fPy;}
- Float_t Pz() const {return fPz;}
- Float_t Eloss() const {return fEloss;}
- Float_t Medium() const {return fMedium;}
- Float_t Energy() const;
- Float_t PolarAngle() const;
- Float_t AzimuthAngle() const;
-
-protected:
- Float_t fId; //
- Float_t fPx; //
- Float_t fPy; //
- Float_t fPz; //
- Float_t fEloss; //
- Float_t fMedium; //
-
-private:
- ClassDef(AliCRThit,1) // Hit for CRT (ACORDE)
-};
-#endif /* ALICRTHIT_H */
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-///////////////////////////////////////////////////////////////////////////////
-// //
-// ALICE Cosmic Ray Trigger //
-// //
-// This class contains the functions for version 0 of the ALICE Cosmic Ray //
-// Trigger. This version will be used to simulation comic rays in alice //
-// with all the detectors. //
-//
-// Authors:
-//
-// Arturo Fernandez <afernand@fcfm.buap.mx>
-// Enrique Gamez <egamez@fcfm.buap.mx>
-//
-// Universidad Autonoma de Puebla
-//
-//
-//Begin_Html
-/*
-<img src="picts/AliCRTv0Class.gif">
-</pre>
-<br clear=left>
-<p>The responsible person for this module is
-<a href="mailto:egamez@fcfm.buap.mx">Enrique Gamez</a>.
-</font>
-<pre>
-*/
-//End_Html
-// //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AliCRTv0.h"
-
-#include <TGeometry.h>
-#include <TBRIK.h>
-#include <TNode.h>
-#include <TVirtualMC.h>
-
-#include "AliRun.h"
-#include "AliConst.h"
-
-#include "AliCRTConstants.h"
-#include "AliCRTModule.h"
-
-ClassImp(AliCRTv0)
-
-//_____________________________________________________________________________
-AliCRTv0::AliCRTv0()
- : AliCRT()
-{
- //
- // Default constructor
- //
-}
-
-//_____________________________________________________________________________
-AliCRTv0::AliCRTv0(const char *name, const char *title)
- : AliCRT(name, title)
-{
- //
- // Standard constructor
- //
- //Begin_Html
- /*
- <img src="picts/AliCRTv0.gif">
- */
- //End_Html
- //PH SetMarkerColor(kRed);
- //PH SetMarkerStyle(kRed);
- //PH SetMarkerSize(0.4);
-}
-
-//_____________________________________________________________________________
-AliCRTv0::~AliCRTv0()
-{
- //
- // Default destructor
- //
-}
-
-//_____________________________________________________________________________
-void AliCRTv0::BuildGeometry()
-{
- //
- // Create the ROOT TNode geometry for the CRT
- //
-
- TNode *node, *top;
-
- const Int_t kColorCRT = kRed;
-
- // Find the top node alice.
- top = gAlice->GetGeometry()->GetNode("alice");
-
- AliCRTConstants* crtConstants = AliCRTConstants::Instance();
-
- new TBRIK("S_CRT_A", "CRT box", "void",
- crtConstants->ActiveAreaLenght()/2.,
- crtConstants->ActiveAreaHeight()/2.,
- crtConstants->ActiveAreaWidth()/2.);
-
-
- new TRotMatrix("Left", "Left", 90., 315., 90., 45., 0., 337.5);
- new TRotMatrix("Right", "Right", 90., 45., 90., 315., 180., 202.5);
- new TRotMatrix("Up", "Up", 90., 0., 90., 90., 0., 90.);
- top->cd();
-
- //
- // Put 4 modules on the top of the magnet
- Float_t box = crtConstants->CageWidth()/2.;
- top->cd();
- node = new TNode("upper1", "upper1", "S_CRT_A", 0., 790., 3.*box, "Up");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper2", "upper2", "S_CRT_A", 0., 790., box, "Up");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper3", "upper3", "S_CRT_A", 0., 790., -1.*box, "Up");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper4", "upper4", "S_CRT_A", 0., 790., -3.*box, "Up");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
-
- // Modules on the left side.
- Float_t xtragap = 10.;
- Float_t initXside = (790.+xtragap)*TMath::Sin(2*22.5*kDegrad); //rigth side
- Float_t initYside = (790.+xtragap)*TMath::Cos(2*22.5*kDegrad);
- top->cd();
- node = new TNode("upper5", "upper5", "S_CRT_A", initXside, initYside, 3.*box, "Left");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper6", "upper6", "S_CRT_A", initXside, initYside, box, "Left");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper7", "upper7", "S_CRT_A", initXside, initYside, -1.*box, "Left");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper8", "upper8", "S_CRT_A", initXside, initYside, -3.*box, "Left");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
-
- // Modules on the right side.
- top->cd();
- node = new TNode("upper9", "upper9", "S_CRT_A", -initXside, initYside, 3.*box, "Right");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper10", "upper10", "S_CRT_A", -initXside, initYside, box, "Right");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper11","upper11", "S_CRT_A", -initXside, initYside, -1.*box, "Right");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
- top->cd();
- node = new TNode("upper12","upper12", "S_CRT_A", -initXside, initYside, -3.*box, "Right");
- node->SetLineColor(kColorCRT);
- fNodes->Add(node);
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv0::CreateGeometry()
-{
- //
- // Create geometry for the CRT array
- //
-
- Int_t idrotm[2499]; // The rotation matrix.
- Int_t* idtmed = fIdtmed->GetArray() - 1099;
- AliCRTConstants* crtConstants = AliCRTConstants::Instance();
-
- // Create the mother volume.
- // This volume can be seen as the volume which ACORDE will ocupate
- // above the upper face of the L3 magnet. Inside this volume the detectors
- // aboce the magnet will be, then there will be two copies of this volume,
- // one for each side.
- Float_t box[3];
- //box[0] = 2*crtConstants->MagMinRadius()*TMath::Sin(kDegrad*22.5);
- box[0] = crtConstants->MagMinRadius()*TMath::Sin(kDegrad*22.5);
- box[1] = crtConstants->MagMaxRadius() - crtConstants->MagMinRadius();
- box[2] = crtConstants->MagnetLenght()/2;
- gMC->Gsvolu("CRT1", "BOX", idtmed[1112], box, 3);
-
- // Check if the AliCRTModule instance have been set, otherwise
- // use the default values
- if ( !fModule ) {
- Info("CreateGeometry", "Using default dimensions");
- fModule = new AliCRTModule("CRTmod", "Default module dimensions");
- }
-
- // The full module volume.
- // This volume will be ocupied by all the material of the module
- // the scintillators, the aluminium frame, etc.
- box[0] = fModule->FrameLength()/2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = fModule->FrameWidth()/2;
- gMC->Gsvolu("CRT2", "BOX", idtmed[1114], box, 3);
-
- // The scintillators
- box[0] = crtConstants->SinglePaletteLenght()/4;
- box[1] = crtConstants->SinglePaletteHeight();
- box[2] = crtConstants->SinglePaletteWidth()/2;
- gMC->Gsvolu("CRT3", "BOX", idtmed[1112], box, 3);
- gMC->Gspos("CRT3", 1, "CRT2", 0, 2, 0, 0, "ONLY");
-
- // The metallic frame
- box[0] = fModule->FrameLength()/2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = 2;
- gMC->Gsvolu("CRT4", "BOX", idtmed[1108], box, 3);
- gMC->Gspos("CRT4", 1, "CRT2", 0, 0, 13 - box[2], 0, "MANY");
- gMC->Gspos("CRT4", 2, "CRT2", 0, 0, -13 + box[2], 0, "MANY");
-
- box[0] = 2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = fModule->FrameWidth()/2;
- gMC->Gsvolu("CRT5", "BOX", idtmed[1108], box, 3);
- gMC->Gspos("CRT5", 1, "CRT2", 140 - box[0], 0, 0, 0, "MANY");
- gMC->Gspos("CRT5", 2, "CRT2", -140 + box[0], 0, 0, 0, "MANY");
-
- // The support bars
- box[0] = 2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = 500;
- gMC->Gsvolu("CRT6", "BOX", idtmed[1108], box, 3);
-
- // Now put into the volume CR11 all the above volumes.
- // 20 scintillation modules
- // 4 support bars
- Int_t copyNumber = 0;
- for ( Int_t k = 0; k < fModule->NumberOfRows(); k++ ) {
- Float_t zCoordinate = k*fModule->ZGap() - 450;
- gMC->Gspos("CRT2",++copyNumber,"CRT1",-150, 15, zCoordinate, 0, "MANY");
- gMC->Gspos("CRT2",++copyNumber,"CRT1",150, 15, zCoordinate, 0, "MANY");
-
- }
-
- // Put the support bars
- gMC->Gspos("CRT6", 1, "CRT1", -75, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 2, "CRT1", -225, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 3, "CRT1", 75, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 4, "CRT1", 225, 5, 0, 0, "ONLY");
-
- // Now put a copy of CR11 on the 3 upper faces of the magnet
- // In the right side side of the magnet
- AliMatrix(idrotm[231], 90, 45, 90, 135, 0, 0);
- // In the left side side of the magnet
- AliMatrix(idrotm[232], 90, 315, 90, 45, 0, 0);
-
- Float_t x = crtConstants->MagMinRadius()+10;
- gMC->Gspos("CRT1", 1, "ALIC", 0, x, 0, 0, "MANY");
- gMC->Gspos("CRT1", 2, "ALIC", -x*TMath::Sin(kDegrad*45), x*TMath::Cos(kDegrad*45), 0, idrotm[231], "MANY");
- gMC->Gspos("CRT1", 3, "ALIC", x*TMath::Sin(kDegrad*45), x*TMath::Cos(kDegrad*45), 0, idrotm[232], "MANY");
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv0::DrawDetector() const
-{
- //
- // Draw a shaded view of the L3 magnet
- //
-
- Info("DrawDetector", "Drawing the module");
-
- gMC->Gsatt("*", "seen", -1);
-
- gMC->Gsatt("ALIC","seen",0);
-
- gMC->Gsatt("L3MO","seen",0); // L3 Magnet, Mother
- gMC->Gsatt("L3CO","seen",1); // Coils
- gMC->Gsatt("L3C1","seen",1); // Coils
- gMC->Gsatt("L3YO","seen",1); // Yoke
- gMC->Gsatt("L3DO","seen",0); // return Yoke (DOOR)
- gMC->Gsatt("L3FR","seen",1); // DOOR
- gMC->Gsatt("L3IR","seen",0); // Inner layer
- gMC->Gsatt("L3O1","seen",1); // Door opening
- gMC->Gsatt("L3O2","seen",1); // Door opening
-
- gMC->Gsatt("CRT1", "seen", 0); // CRT Mother
- gMC->Gsatt("CRT2", "seen", 0); // Module air box
- gMC->Gsatt("CRT3", "seen", 1); // Scintillators
- gMC->Gsatt("CRT3", "colo", 2); // Scintillators
- gMC->Gsatt("CRT4", "seen", 1); // Aluminium frame (long bars)
- gMC->Gsatt("CRT4", "colo", 3); //
- gMC->Gsatt("CRT5", "seen", 1); // Aluminium frame (short bars)
- gMC->Gsatt("CRT5", "colo", 3); //
- gMC->Gsatt("CRT6", "seen", 1); // Module support
- gMC->Gsatt("CRT6", "colo", 3); //
-
- gMC->Gdopt("hide", "on");
- gMC->Gdopt("edge","off");
- gMC->Gdopt("shad", "on");
- gMC->Gsatt("*", "fill", 7);
- gMC->SetClipBox("ALIC", 0, 3000, -3000, 3000, -6000, 6000);
- gMC->DefaultRange();
- //gMC->Gdraw("alic", 40, 30, 0, 10, 9.5, .009, .009);
- gMC->Gdraw("alic", 30, 40, 0, -30, -60, .09, .09);
- gMC->Gdhead(1111, "View of CRT(ACORDE)");
- gMC->Gdman(18, 4, "MAN");
-}
+++ /dev/null
-#ifndef ALICRTV0_H
-#define ALICRTV0_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-////////////////////////////////////////////////
-// Manager class for detector: CRTv0 //
-////////////////////////////////////////////////
-
-#include "AliCRT.h"
-
-class AliCRTv0 : public AliCRT {
-public:
- AliCRTv0();
- AliCRTv0(const char *name, const char *title);
- virtual ~AliCRTv0();
-
- virtual void CreateGeometry();
- virtual void BuildGeometry();
- virtual void DrawDetector() const;
-
-protected:
- virtual void CreateMolasse() {}
- virtual void CreateShafts() {}
-
-private:
- AliCRTv0(const AliCRTv0& crt);
- AliCRTv0& operator=(const AliCRTv0& crt);
-
- ClassDef(AliCRTv0,1) // Cosmic Ray Trigger (ACORDE).
-};
-#endif // ALICRTV0_H
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-///////////////////////////////////////////////////////////////////////////////
-// //
-// ALICE Cosmic Ray Trigger //
-// //
-// This class contains the functions for version 0 of the ALICE Cosmic Ray //
-// Trigger. This vesion is suposed to work as standalone module //
-// //
-//
-// Authors:
-//
-// Arturo Fernandez <afernand@fcfm.buap.mx>
-// Enrique Gamez <egamez@fcfm.buap.mx>
-//
-// Universidad Autonoma de Puebla
-//
-//
-//Begin_Html
-/*
-<img src="picts/AliCRTv1Class.gif">
-</pre>
-<br clear=left>
-<p>The responsible person for this module is
-<a href="mailto:egamez@fcfm.buap.mx">Enrique Gamez</a>.
-</font>
-<pre>
-*/
-//End_Html
-// //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AliCRTv1.h"
-
-#include <TClonesArray.h>
-#include <TLorentzVector.h>
-#include <TPDGCode.h>
-#include <TVirtualMC.h>
-
-#include "AliRun.h"
-#include "AliConst.h"
-
-#include "AliCRThit.h"
-#include "AliCRTModule.h"
-#include "AliCRTConstants.h"
-#include "AliMC.h"
-#include "AliLog.h"
-
-ClassImp(AliCRTv1)
-
-//_____________________________________________________________________________
-AliCRTv1::AliCRTv1()
- : AliCRT()
-{
- //
- // Default constructor
- //
- fIshunt = 0;
- fHits = 0;
-}
-
-//_____________________________________________________________________________
-AliCRTv1::AliCRTv1(const char *name, const char *title)
- : AliCRT(name, title)
-{
- //
- // Standard constructor
- //
- //Begin_Html
- /*
- <img src="picts/AliCRTv1.gif">
- */
- //End_Html
- fIshunt = 1; // All hits are associated with primary particles
-
- fHits = new TClonesArray("AliCRThit",400);
- gAlice->GetMCApp()->AddHitList(fHits);
-
- //PH SetMarkerColor(7);
- //PH SetMarkerStyle(2);
- //PH SetMarkerSize(0.4);
-}
-
-//_____________________________________________________________________________
-AliCRTv1::~AliCRTv1()
-{
- //
- // Default destructor
- //
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::CreateMaterials()
-{
- //
- // Create Materials.
- // Use the parent class definition of the materials
- //
- AliCRT::CreateMaterials();
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::CreateGeometry()
-{
- //
- // Create geometry for the CRT array
- //
-
- Int_t idrotm[2499]; // The rotation matrix.
- Int_t* idtmed = fIdtmed->GetArray() - 1099 ;
- AliCRTConstants* crtConstants = AliCRTConstants::Instance();
-
- // Create the mother volume, the one which will contain all the material
- // above the hall.
- Float_t pbox[3];
- pbox[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad);
- //pbox[0] = 12073;
- pbox[1] = crtConstants->Depth();
- pbox[2] = pbox[0];
- gMC->Gsvolu("CRT", "BOX", idtmed[1114], pbox, 3);
- gMC->Gspos("CRT", 1, "ALIC", 0, 0, 0, 0, "ONLY");
-
- // Shafts.
- this->CreateShafts();
-
- // Molasse.
- this->CreateMolasse();
-
- // This volume can be seen as the volume which ACORDE will ocupate
- // above the upper face of the L3 magnet. Inside this volume the detectors
- // aboce the magnet will be, then there will be two copies of this volume,
- // one for each side.
- Float_t box[3];
- //box[0] = 2*crtConstants->MagMinRadius()*TMath::Sin(kDegrad*22.5);
- box[0] = crtConstants->MagMinRadius()*TMath::Sin(kDegrad*22.5);
- box[1] = crtConstants->MagMaxRadius() - crtConstants->MagMinRadius();
- box[2] = crtConstants->MagnetLenght()/2;
- gMC->Gsvolu("CRT1", "BOX", idtmed[1134], box, 3);
-
- // Check if the AliCRTModule instance have been set, otherwise
- // use the default values
- if ( !fModule ) {
- Info("CreateGeometry", "Using default dimensions");
- fModule = new AliCRTModule("CRTmod", "Default module dimensions");
- }
-
- // The full module volume.
- // This volume will be ocupied by all the material of the module
- // the scintillators, the aluminium frame, etc.
- box[0] = fModule->FrameLength()/2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = fModule->FrameWidth()/2;
- gMC->Gsvolu("CRT2", "BOX", idtmed[1114], box, 3);
-
- // The scintillators
- box[0] = crtConstants->SinglePaletteLenght()/4;
- box[1] = crtConstants->SinglePaletteHeight();
- box[2] = crtConstants->SinglePaletteWidth()/2;
- gMC->Gsvolu("CRT3", "BOX", idtmed[1112], box, 3);
- gMC->Gspos("CRT3", 1, "CRT2", 0, 2, 0, 0, "ONLY");
-
- // The metallic frame
- box[0] = fModule->FrameLength()/2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = 2;
- gMC->Gsvolu("CRT4", "BOX", idtmed[1108], box, 3);
- gMC->Gspos("CRT4", 1, "CRT2", 0, 0, 13 - box[2], 0, "MANY");
- gMC->Gspos("CRT4", 2, "CRT2", 0, 0, -13 + box[2], 0, "MANY");
-
- box[0] = 2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = fModule->FrameWidth()/2;
- gMC->Gsvolu("CRT5", "BOX", idtmed[1108], box, 3);
- gMC->Gspos("CRT5", 1, "CRT2", 140 - box[0], 0, 0, 0, "MANY");
- gMC->Gspos("CRT5", 2, "CRT2", -140 + box[0], 0, 0, 0, "MANY");
-
- // The support bars
- box[0] = 2;
- box[1] = fModule->FrameThickness()/2;
- box[2] = 500;
- gMC->Gsvolu("CRT6", "BOX", idtmed[1108], box, 3);
-
- // Now put into the volume CR11 all the above volumes.
- // 20 scintillation modules
- // 4 support bars
- Int_t copyNumber = 0;
- for ( Int_t k = 0; k < fModule->NumberOfRows(); k++ ) {
- Float_t zCoordinate = k*fModule->ZGap() - 450;
- gMC->Gspos("CRT2",++copyNumber,"CRT1",-150, 15, zCoordinate, 0, "MANY");
- gMC->Gspos("CRT2",++copyNumber,"CRT1",150, 15, zCoordinate, 0, "MANY");
-
- }
-
- // Put the support bars
- gMC->Gspos("CRT6", 1, "CRT1", -75, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 2, "CRT1", -225, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 3, "CRT1", 75, 5, 0, 0, "ONLY");
- gMC->Gspos("CRT6", 4, "CRT1", 225, 5, 0, 0, "ONLY");
-
- // Now put a copy of CR11 on the 3 upper faces of the magnet
- // In the right side side of the magnet
- AliMatrix(idrotm[231], 90, 45, 90, 135, 0, 0);
- // In the left side side of the magnet
- AliMatrix(idrotm[232], 90, 315, 90, 45, 0, 0);
-
- Float_t x = crtConstants->MagMaxRadius();
- gMC->Gspos("CRT1", 1, "ALIC", 0, x, 0, 0, "MANY");
- gMC->Gspos("CRT1", 2, "ALIC", -x*TMath::Sin(kDegrad*45), x*TMath::Cos(kDegrad*45), 0, idrotm[231], "MANY");
- gMC->Gspos("CRT1", 3, "ALIC", x*TMath::Sin(kDegrad*45), x*TMath::Cos(kDegrad*45), 0, idrotm[232], "MANY");
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::CreateMolasse()
-{
- //
- //
- //
- Int_t idrotm[2499]; // The rotation matrix.
- Int_t* idtmed = fIdtmed->GetArray() - 1099 ;
-
- Float_t px24radius = 2300/2;
- Float_t px24X = 0;
- //Float_t px24Y = ;
- Float_t px24Z = 2300;
-
- Float_t pm25radius = 910/2;
- Float_t pm25X = 2100;
- //Float_t pm25Y = ;
- Float_t pm25Z = 0;
-
- Float_t pgc2radius = 1100/2;
- Float_t pgc2X = -375;
- //Float_t pgc2Y = ;
- Float_t pgc2Z = -(1900 + 2987.7);
-
- Float_t concreteWidth = 100; // Standard width of the hall walls.
-
-
- // Create a local mother volume.
- Float_t pbox[3];
- pbox[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad);
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = pbox[0];
- gMC->Gsvolu("CMO1", "BOX", idtmed[1114], pbox, 3);
-
- // Now put the molasse exactly above the hall. OK
- // Above the ceiling
- Float_t ptubs[5];
- ptubs[0] = 1170;
- ptubs[1] = 2100 - pm25radius;
- ptubs[2] = 1900/2 + px24radius;
- ptubs[3] = 0;
- ptubs[4] = 180;
- gMC->Gsvolu("CMO2", "TUBS", idtmed[1123], ptubs, 5);
- gMC->Gspos("CMO2", 1, "CMO1", 0, 500-AliCRTConstants::Instance()->Depth()/2, ptubs[2]-1900, 0, "MANY");
-
- // Molasse around the RB24/26 Wall. OK
- ptubs[0] = 220 + 1600;
- ptubs[1] = AliCRTConstants::Instance()->Depth() - ptubs[0];
- ptubs[2] = 2987.7/2 - 1100/4 - concreteWidth/2;
- ptubs[3] = 0;
- ptubs[4] = 180;
- gMC->Gsvolu("CMO3", "TUBS", idtmed[1123], ptubs, 5);
- gMC->Gspos("CMO3", 1, "CMO1", 70, 40-AliCRTConstants::Instance()->Depth()/2, -1900 - ptubs[2], 0, "MANY");
-
- // A big block above the RB24/26 wall. OK
- pbox[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad);
- pbox[1] = (AliCRTConstants::Instance()->Depth() - 220 - 1600)/2;
- pbox[2] = 2987.7/2 - 1100/4 - concreteWidth/2;
- gMC->Gsvolu("CMO4", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CMO4", 1, "CMO1", 0, AliCRTConstants::Instance()->Depth()/2 - pbox[1], -1900 - pbox[2], 0, "MANY");
- // Small blocks below the volume CMO4 on both sides of the wall RB24/26. OK
- pbox[0] = (AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - ptubs[0])/2;
- pbox[1] = AliCRTConstants::Instance()->Depth()/2 - pbox[1];
- gMC->Gsvolu("CM17", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM17", 1, "CMO1", AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - pbox[0], -AliCRTConstants::Instance()->Depth()/2 + pbox[1], -1900 - pbox[2], 0, "MANY");
- gMC->Gspos("CM17", 2, "CMO1", -AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad)+ pbox[0], -AliCRTConstants::Instance()->Depth()/2 + pbox[1], -1900 - pbox[2], 0, "MANY");
-
- // And a big block of molasse above the hall up to the surface. OK
- pbox[0] = pm25X - pm25radius;
- pbox[1] = (AliCRTConstants::Instance()->Depth()-500-1170)/2;
- pbox[2] = (1900 + 1150)/2;
- gMC->Gsvolu("CMO5", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CMO5", 1, "CMO1", 0,AliCRTConstants::Instance()->Depth()/2-pbox[1], pbox[2]-1900, 0, "MANY");
- // Small blocks of molasse betwen the blocks CMO2, CMO5 and PM25. Ok
- pbox[0] = (pm25X - pm25radius - 1170)/2;
- pbox[1] = 1000;
- gMC->Gsvolu("CM16", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM16", 1, "CMO1", 1170 + pbox[0], -AliCRTConstants::Instance()->Depth()/2+pbox[1], pbox[2] - 1900, 0, "MANY");
-
- // Molasse around the shafts.
- AliMatrix(idrotm[2003], 0, 0, 90, 0, 90, 90);
- // Around the PX24, the open section. OK
- ptubs[0] = px24radius + concreteWidth;
- ptubs[1] = ptubs[0] + 1000;
- ptubs[2] = (2300 - (5150 - AliCRTConstants::Instance()->Depth()))/2;
- ptubs[3] = 180 + kRaddeg*TMath::ASin(1070/ptubs[0]);
- ptubs[4] = 180 - kRaddeg*TMath::ASin(1070/ptubs[0]);
- gMC->Gsvolu("CMO6", "TUBS", idtmed[1123], ptubs, 5);
- gMC->Gspos("CMO6", 1, "CMO1", px24X, ptubs[2] - AliCRTConstants::Instance()->Depth()/2, px24Z, idrotm[2003], "MANY");
-
- // Around the PX24, the closed section. OK
- Float_t ptube[3];
- ptube[0] = px24radius + concreteWidth;
- ptube[1] = ptube[0] + 1000;
- ptube[2] = (5150 - 2300)/2;
- gMC->Gsvolu("CMO7", "TUBE", idtmed[1123], ptube, 3);
- gMC->Gspos("CMO7", 1, "CMO1", px24X, AliCRTConstants::Instance()->Depth()/2 - ptube[2], px24Z, idrotm[2003], "MANY");
-
- // Around PM25. OK
- ptube[0] = pm25radius + concreteWidth;
- ptube[1] = ptube[0] + 400;
- ptube[2] = AliCRTConstants::Instance()->Depth()/2;
- gMC->Gsvolu("CMO8", "TUBE", idtmed[1123], ptube, 3);
- gMC->Gspos("CMO8", 1, "CMO1", pm25X, 0, pm25Z, idrotm[2003], "MANY");
- // On both sides of the PM25 along the HALL.
- pbox[0] = (2100 + pm25radius - 1170)/2;
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = (3*px24radius - pm25radius)/2;
- gMC->Gsvolu("CM18", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM18", 1, "CMO1", 2100, 0, pbox[2] + pm25radius, 0, "MANY");
-
- pbox[2] = (1900 - pm25radius)/2;
- gMC->Gsvolu("CM19", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM19", 1, "CMO1", 2100, 0, -pbox[2] - pm25radius, 0, "MANY");
-
- // Around the PGC2. OK
- ptube[0] = pgc2radius + concreteWidth;
- ptube[1] = 2987.7 - 740;
- ptube[2] = AliCRTConstants::Instance()->Depth()/2;
- gMC->Gsvolu("CMO9", "TUBE", idtmed[1123], ptube, 3);
- gMC->Gspos("CMO9", 1, "CMO1", pgc2X, 0, pgc2Z, idrotm[2003], "MANY");
-
- // On both sides of the PGC2.OK
- pbox[0] = (AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - 1100 - 375)/2;
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = pgc2radius + concreteWidth;
- gMC->Gsvolu("CM10", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM10", 1, "CMO1", AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - pbox[0], 0, pgc2Z, 0, "MANY");
- gMC->Gspos("CM10", 2, "CMO1", -AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) + pbox[0], 0, pgc2Z, 0, "MANY");
-
- // big block of molasse behind the PX24. OK
- pbox[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad);
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = (pbox[0] - (2300 + 1150 + 100))/2;
- gMC->Gsvolu("CM12", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM12", 1, "CMO1", px24X, 0, px24Z + px24radius + concreteWidth + pbox[2], 0, "MANY");
-
- // big block of molasse in the opposite side of the PM25. OK
- pbox[0] = (AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - 1150)/2;
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = (1900 + 2300 + 1150)/2;
- gMC->Gsvolu("CM13", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM13", 1, "CMO1", -1150 - pbox[0], 0, pbox[2] - 1900, 0, "MANY");
-
- // big block of molasse behind the PM25. OK
- pbox[0] = (AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad) - (2100 + 910/2 + 100))/2;
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = (1900 + 2300 + 1150)/2;
- gMC->Gsvolu("CM14", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM14", 1, "CMO1", pm25X + pm25radius + concreteWidth + pbox[0], 0, pbox[2] - 1900, 0, "MANY");
-
- // big block of molasse behind the PGC2. OK
- pbox[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(67.5*kDegrad);
- pbox[1] = AliCRTConstants::Instance()->Depth()/2;
- pbox[2] = (pbox[0] - (2987.7 + 1900 + 1100/2 + 100))/2;
- gMC->Gsvolu("CM15", "BOX", idtmed[1123], pbox, 3);
- gMC->Gspos("CM15", 1, "CMO1", 0, 0, -pbox[0] + pbox[2], 0, "MANY");
-
- gMC->Gspos("CMO1",1,"CRT",0,AliCRTConstants::Instance()->Depth()/2,0,0,"MANY");
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::CreateShafts()
-{
- //
- //
- //
- Int_t idrotm[2499]; // The rotation matrix.
- Int_t* idtmed = fIdtmed->GetArray() - 1099 ;
-
- //
- // Acces shafts
- //
- AliMatrix(idrotm[2001], 0, 0, 90, 0, 90, 90);
-
-
- // Create a bing cilinder to hold the main structures in the shaft.
- // All the structures relative to the shaft will be put into
- // this volume.
- // This shaft is composed by an open tube down in the hall, and
- // a cilinder avobe the level of the ceiling.
- Float_t ptube[3];
- ptube[0] = 0; // inner radius
- ptube[1] = 1250; // outer radius
- ptube[2] = 5150/2; // Half lenght in Z
- gMC->Gsvolu("CSF1", "TUBE", idtmed[1114], ptube, 3);
-
- Float_t ptubs[5];
- // The open section of the PX24
- ptubs[0] = 1150; // Inner radius
- ptubs[1] = 1250; // Outer radius
- ptubs[2] = 1300; // Half length
- ptubs[3] = 180 + kRaddeg*TMath::ASin(1070/ptubs[0]); // starting angle
- ptubs[4] = 180 - kRaddeg*TMath::ASin(1070/ptubs[0]);
- gMC->Gsvolu("CSF2", "TUBS", idtmed[1116], ptubs, 5);
- gMC->Gspos("CSF2", 1, "CSF1", 0, 0, -ptube[2] + ptubs[2], 0, "MANY");
-
- // The other part of the shaft.
- ptube[0] = ptubs[0]; // Inner radius
- ptube[1] = ptubs[1]; // Outer radius
- ptube[2] = 5150/2 - ptubs[2]; // Half lenght
- gMC->Gsvolu("CSF3", "TUBE", idtmed[1116], ptube, 3);
- gMC->Gspos("CSF3", 1, "CSF1", 0, 0, 5150/2 - ptube[2], 0, "MANY");
-
- Float_t pbox[3];
- // Concrete walls along the shaft (next to the elevator.)
- pbox[0] = 480/2; // Half length in X
- pbox[1] = 120/2; // Half length in Y
- pbox[2] = 5150/2; // Half length in Z
- gMC->Gsvolu("CSW1", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW1", 1, "CSF1", 820+pbox[0], 150+pbox[1], 0, 0, "MANY");
- gMC->Gspos("CSW1", 2, "CSF1", 820+pbox[0], -300-pbox[1], 0, 0, "MANY");
-
- //
- pbox[0] = 120/2; // Half length in X
- pbox[1] = 750/2; // Half length in Y
- pbox[2] = 5150/2; // Half length in Z
- gMC->Gsvolu("CSW2", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW2", 1, "CSF1", 820-60, 150+pbox[1], 0, 0, "MANY");
-
- //
- pbox[0] = 120/2; // Half length in X
- pbox[1] = 600/2; // Half lenght in Y
- pbox[2] = 5150/2; // Half length in Z
- gMC->Gsvolu("CSW3", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW3", 1, "CSF1", 820-60, -300-pbox[1], 0, 0, "MANY");
-
- // Material below the counting rooms.
- pbox[0] = 400/2;
- pbox[1] = 2300/2;
- pbox[2] = 300/2;
- gMC->Gsvolu("CSW4", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW4",1,"CSF1",2300/2-pbox[0],0,3000-5150/2-pbox[2], 0, "MANY");
-
- // Shielding plug.
- pbox[0] = 1400/2;
- pbox[1] = 2300/2;
- pbox[2] = 170/2;
- gMC->Gsvolu("CSW5", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW5", 1, "CSF1", 0, 0, 3000-5150/2-130, 0, "MANY");
-
- // The end of the support for the shielding plug.
- pbox[0] = 170/2;
- pbox[1] = 2300/2;
- pbox[2] = 300/2;
- gMC->Gsvolu("CSW6", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW6",1,"CSF1",-1400/2-pbox[0],0,3000-5150/2-pbox[2],0,"MANY");
-
- // ...
- pbox[0] = 100/2;
- pbox[1] = 2300/2;
- pbox[2] = 450/2;
- gMC->Gsvolu("CSW7", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW7",1,"CSF1",-1400/2-170-pbox[0],0,3000-5150/2+pbox[2],0,"MANY");
-
- // Material close to the pipe.
- pbox[0] = 300/2;
- pbox[1] = 2300/2;
- pbox[2] = 170/2;
- gMC->Gsvolu("CSW8", "BOX", idtmed[1116], pbox, 3);
- gMC->Gspos("CSW8",1,"CSF1",-2300/2+pbox[0],0,2500-5150/2,0,"MANY");
-
- // Now put the shaft into the mother volume.
- gMC->Gspos("CSF1", 1, "CRT", 0, AliCRTConstants::Instance()->Depth() - 5150/2, 2300, idrotm[2001], "MANY");
-
- // PM25 Access Shaft
- ptube[0] = 910/2;
- ptube[1] = ptube[0] + 100;
- ptube[2] = (5150 - 1166)/2;
- gMC->Gsvolu("CSF4", "TUBE", idtmed[1116], ptube, 3);
- gMC->Gspos("CSF4", 1, "CRT", 2100, AliCRTConstants::Instance()->Depth()-ptube[2], 0, idrotm[2001], "MANY");
-
- // PGC2 Access Shaft
- ptube[0] = 1100/2;
- ptube[1] = ptube[0] + 100;
- ptube[2] = (5150 - 690)/2;
- gMC->Gsvolu("CSF5", "TUBE", idtmed[1116], ptube, 3);
- gMC->Gspos("CSF5", 1, "CRT", -375, AliCRTConstants::Instance()->Depth()-ptube[2], -1900 - 2987.7, idrotm[2001], "MANY");
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::DrawDetector() const
-{
- //
- // Draw a shaded view of the L3 magnet
- //
- Info("DrawDetector", "Drawing CRT module");
-
- gMC->Gsatt("*", "seen", -1);
- gMC->Gsatt("ALIC", "seen", 0);
- /*
- gMC->Gsatt("L3MO","seen",0); // L3 Magnet, Mother
- gMC->Gsatt("L3CO","seen",1); // Coils
- gMC->Gsatt("L3C1","seen",1); // Coils
- gMC->Gsatt("L3YO","seen",1); // Yoke
- gMC->Gsatt("L3DO","seen",0); // return Yoke (DOOR)
- gMC->Gsatt("L3FR","seen",1); // DOOR
- gMC->Gsatt("L3IR","seen",0); // Inner layer
- gMC->Gsatt("L3O1","seen",1); // Door opening
- gMC->Gsatt("L3O2","seen",1); // Door opening
- */
- gMC->Gsatt("CRT", "seen",0); // CRT mother volume.
-
- gMC->Gsatt("CMO1","seen",0); // Molasse.
-
- gMC->Gsatt("CSF1","seen",0); // PX24 access shaft.
- gMC->Gsatt("CSF2", "seen", 1); // PX24 open section
- gMC->Gsatt("CSF3", "seen", 1); // PX24, upper part.
- gMC->Gsatt("CSW1", "seen", 1);
- gMC->Gsatt("CSW2", "seen", 1);
- gMC->Gsatt("CSW3", "seen", 1);
- gMC->Gsatt("CSW4", "seen", 1);
- gMC->Gsatt("CSW5", "seen", 1);
- gMC->Gsatt("CSW6", "seen", 1);
- gMC->Gsatt("CSW7", "seen", 1);
- gMC->Gsatt("CSW8", "seen", 1);
-
- gMC->Gsatt("CSF4","seen",1); // PM25 access shaft.
- gMC->Gsatt("CSF5","seen",1); // PGC2 access shaft.
-
- gMC->Gsatt("CRT", "seen", 0); // CRT Mother volume.
- gMC->Gsatt("CRT1", "seen", 0); // ?
- gMC->Gsatt("CRT2", "seen", 0); // Module air box
- gMC->Gsatt("CRT3", "seen", 1); // Scintillators
- gMC->Gsatt("CRT3", "colo", 2); // Scintillators
- gMC->Gsatt("CRT4", "seen", 1); // Aluminium frame (long bars)
- gMC->Gsatt("CRT4", "colo", 3); //
- gMC->Gsatt("CRT5", "seen", 1); // Aluminium frame (short bars)
- gMC->Gsatt("CRT5", "colo", 3); //
- gMC->Gsatt("CRT6", "seen", 1); // Module support
- gMC->Gsatt("CRT6", "colo", 3); //
-
- gMC->Gdopt("hide", "on");
- gMC->Gdopt("edge","off");
- gMC->Gdopt("shad", "on");
- gMC->Gsatt("*", "fill", 7);
- gMC->SetClipBox("ALIC", 0, 3000, -3000, 3000, -6000, 6000);
- gMC->DefaultRange();
- gMC->Gdraw("alic", 70, 30, 0, 10, 9.5, .001, .001);
- gMC->Gdhead(1111, "View of CRT(ACORDE)");
- gMC->Gdman(18, 4, "MAN");
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::Init()
-{
- //
- // Initialise L3 magnet after it has been built
- Int_t i;
- //
- if(AliLog::GetGlobalDebugLevel()>0) {
- printf("\n%s: ",ClassName());
- for(i=0;i<35;i++) printf("*");
- printf(" CRTv1_INIT ");
- for(i=0;i<35;i++) printf("*");
- printf("\n%s: ",ClassName());
- //
- // Here the CRTv1 initialisation code (if any!)
- for(i=0;i<80;i++) printf("*");
- printf("\n");
- }
-
-}
-
-//____________________________________________________________________________
-void AliCRTv1::StepManager()
-{
- //
- // Called for every step in the Cosmic Ray Trigger
- //
- static Int_t vol[1];
- Int_t ipart;
- TLorentzVector pos;
- TLorentzVector mom;
-
- static Float_t hits[14];
- static Float_t eloss;
-
- if ( gMC->TrackPid() != kMuonMinus ) return;
-
- // Only charged tracks
- if ( !(gMC->TrackCharge()) ) return;
-
- if (gMC->IsNewTrack()) {
- // Reset the deposited energy
- eloss = 0;
- }
-
- // Add th energy loss in each step.
- eloss += gMC->Edep();
-
- if ( ( (strcmp(gMC->CurrentVolName(),"CRT4") == 0) || // Magnet
- (strcmp(gMC->CurrentVolName(),"CRT5") == 0) || // CRT
- (strcmp(gMC->CurrentVolName(),"CRT6") == 0) || // Magnet Doors
- (strcmp(gMC->CurrentVolName(),"CSF2") == 0) || // PX24
- (strcmp(gMC->CurrentVolName(),"CSF3") == 0) || // PM25
- (strcmp(gMC->CurrentVolName(),"CSF4") == 0) ) // PGC2
- && gMC->IsTrackEntering() ) {
-
- /*
- if ( (strcmp(gMC->CurrentVolName(),"CRT3") == 0)
- && gMC->IsTrackEntering() ) {
- */
- // Get current particle id(ipart),track position (pos) and momentum (mom)
- gMC->TrackPosition(pos);
- gMC->TrackMomentum(mom);
- ipart = gMC->TrackPid();
-
- ipart = gMC->TrackPid();
- hits[0] = (Float_t)ipart; // (fId)
-
- hits[1] = pos[0]; // X coordinate (fX)
- hits[2] = pos[1]; // Y coordinate (fY)
- hits[3] = pos[2]; // Z coordinate (fZ)
- hits[4] = mom[0]; // Px (fpxug)
- hits[5] = mom[1]; // Py (fpyug)
- hits[6] = mom[2]; // Pz (fpzug)
- hits[7] = eloss; // Energy loss
-
- Info("StepManager", "X=%f", pos[0]);
-
- // Tag the volumes
- if ( (strcmp(gMC->CurrentVolName(),"CRT4")==0) ) vol[0] = 1; // Magnet
- else if ( (strcmp(gMC->CurrentVolName(),"CRT5")==0) ) vol[0] = 2; // CRT
- else if ( (strcmp(gMC->CurrentVolName(),"CRT6")==0) ) vol[0] = 3; // Doors
- else if ( (strcmp(gMC->CurrentVolName(),"CSF2")==0) ) vol[0] = 4; // PX24
- else if ( (strcmp(gMC->CurrentVolName(),"CSF3")==0) ) vol[0] = 5; // PM25
- else if ( (strcmp(gMC->CurrentVolName(),"CSF4")==0) ) vol[0] = 6; // PGC2
- else vol[0] = -1;// ?
- //vol[0] = gMC->GetMedium(); //layer(flay)
- Info("StepManager", "Adding hit");
- AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits);
- Info("StepManager", "Hit added");
- // Reset the deposited energy only when you reach the Magnet
- if ( (strcmp(gMC->CurrentVolName(),"CRT4")==0) ) eloss = 0;
-
- } else {
- return;
- }
-
-}
-
-//_____________________________________________________________________________
-void AliCRTv1::AddHit(Int_t track, Int_t *vol, Float_t *hits)
-{
- //
- // Add a CRT hit
- //
- TClonesArray &lhits = *fHits;
- new(lhits[fNhits++]) AliCRThit(fIshunt,track,vol,hits);
-}
+++ /dev/null
-#ifndef ALICRTV1_H
-#define ALICRTV1_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-////////////////////////////////////////////////
-// Manager class for detector: CRTv1 //
-////////////////////////////////////////////////
-
-#include "AliCRT.h"
-
-class AliCRTv1 : public AliCRT {
-public:
- AliCRTv1();
- AliCRTv1(const char *name, const char *title);
- virtual ~AliCRTv1();
-
- virtual TString Version() { return TString("v1"); }
- virtual Int_t IsVersion() const { return 1; }
-
- virtual void AddHit(Int_t track, Int_t *vol, Float_t *hits);
- //virtual void FinishEvent();
- //virtual void ResetHits();
- //virtual void ResetDigits();
-
- virtual void CreateMaterials();
- virtual void CreateGeometry();
-
- virtual void Init();
- virtual void DrawDetector() const;
- virtual void StepManager();
-
-protected:
- virtual void CreateMolasse();
- virtual void CreateShafts();
-
-private:
- AliCRTv1(const AliCRTv1& crt);
- AliCRTv1& operator=(const AliCRTv1& crt);
-
- ClassDef(AliCRTv1, 1) //Class for CRT, version 1, Shafts outside of AliHALL
-};
-
-#endif // ALICRTV1_H
+++ /dev/null
-/**************************************************************************
- * 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$ */
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Contain parametrizations to generate atmospheric muons, and also
-// to generate single muons and muon bundles at surface level.
-//
-//Begin_Html
-/*
-<img src="picts/AliGenCRTClass.gif">
-</pre>
-<br clear=left>
-<font size=+2 color=red>
-<p>The responsible person for this module is
-<a href="mailto:Enrique.Gamez.Flores@cern.ch">Enrique Gamez</a>.
-</font>
-<pre>
-*/
-//End_Html
-//
-/////////////////////////////////////////////////////////////////////////////
-
-#include "AliGenCRT.h"
-
-#include <TMCProcess.h>
-#include <TPDGCode.h>
-#include <TClonesArray.h>
-#include <TF1.h>
-#include <TH1F.h>
-
-#include "AliRun.h"
-#include "AliConst.h"
-
-ClassImp(AliGenCRT)
-
-//_____________________________________________________________________________
-AliGenCRT::AliGenCRT()
- : AliGenerator(),
- fIpart(0),
- fCRMode(kSingleMuons),
- fCRModeName(0),
- fXwidth(0),
- fNx(1),
- fZwidth(0),
- fNz(1),
- fMuonGrid(kFALSE),
- fZenithMin(0),
- fZenithMax(0),
- fAzimuthMin(0),
- fAzimuthMax(0),
- fPRange(0),
- fPResolution(1),
- fAp(0),
- fMomentumDist(0),
- fUnfoldedMomentumDist(0),
- fZenithDist(0),
- fPDist(0)
-{
- //
- // Default ctor.
- //
-}
-
-//_____________________________________________________________________________
-AliGenCRT::AliGenCRT(Int_t npart)
- : AliGenerator(npart),
- fIpart(kMuonMinus),
- fCRMode(kSingleMuons),
- fCRModeName(0),
- fXwidth(0),
- fNx(1),
- fZwidth(0),
- fNz(1),
- fMuonGrid(kFALSE),
- fZenithMin(0),
- fZenithMax(0),
- fAzimuthMin(0),
- fAzimuthMax(0),
- fPRange(0),
- fPResolution(1),
- fAp(0),
- fMomentumDist(0),
- fUnfoldedMomentumDist(0),
- fZenithDist(0),
- fPDist(0)
-{
- //
- // Standard ctor.
- //
- fName = "CRT";
- fTitle = "Cosmic Muons generator";
-
- // Set the origin above the vertex, on the surface.
- fOrigin[0] = 0.;
- fOrigin[1] = AliCRTConstants::Instance()->Depth(); // At the surface by default.
- fOrigin[2] = 0.;
-}
-
-//_____________________________________________________________________________
-AliGenCRT::AliGenCRT(const AliGenCRT& gen)
- : AliGenerator(gen)
-{
- //
- // Copy constructor
- //
- gen.Copy(*this);
-}
-
-//_____________________________________________________________________________
-AliGenCRT& AliGenCRT::operator=(const AliGenCRT& gen)
-{
- //
- // Asingment operator
- //
- gen.Copy(*this);
- return *this;
-}
-
-//_____________________________________________________________________________
-AliGenCRT::~AliGenCRT()
-{
- //
- // Default dtor.
- //
- if ( fPDist ) {fPDist->Delete(); delete fPDist; fPDist = 0;}
- if ( fUnfoldedMomentumDist ) delete fUnfoldedMomentumDist;
- if ( fMomentumDist ) delete fMomentumDist;
- if ( fAp ) delete fAp;
- if ( fCRModeName ) delete fCRModeName;
-}
-
-//_____________________________________________________________________________
-void AliGenCRT::Generate()
-{
- //
- // Generate on one trigger
- // Call the respective method inside the loop for the number
- // of tracks per trigger.
-
- for (Int_t i = 0; i < fNpart; i++ ) {
-
- if ( fCRMode == kMuonBundle ) {
- this->GenerateOneMuonBundle();
-
- } else if ( fCRMode == kSingleMuons ) {
- this->GenerateOneSingleMuon(kTRUE);
-
- } else {
- // Generate only single muons following the parametrizations
- // for atmospheric muons.
- this->GenerateOneSingleMuon();
-
- }
-
- }
-}
-
-//_____________________________________________________________________________
-void AliGenCRT::Init()
-{
- //
- // Initialize some internal methods.
- //
-
- // Determine some specific data members.
- fPRange = TMath::Abs(fPMax-fPMin);
-
- if ( fCRMode == kSingleMuons ) {
- fCRModeName = new TString("Single Muons");
- // Initialisation, check consistency of selected ranges
- if(TestBit(kPtRange)&&TestBit(kMomentumRange))
- Fatal("Init","You should not set the momentum range and the pt range!");
-
- if((!TestBit(kPtRange))&&(!TestBit(kMomentumRange)))
- Fatal("Init","You should set either the momentum or the pt range!");
-
- } else if ( fCRMode == kMuonBundle ) {
- fCRModeName = new TString("Muon Bundles");
-
- } else if ( fCRMode == kMuonFlux ) {
- fCRModeName = new TString("Muon Fluxes");
- // Initialize the ditribution functions.
- this->InitMomentumGeneration();
- this->InitZenithalAngleGeneration();
-
- } else {
- Fatal("Generate", "Generation Mode unknown!\n");
-
- }
-
-}
-
-//____________________________________________________________________________
-void AliGenCRT::GenerateOneSingleMuon(Bool_t withFlatMomentum)
-{
- //
- // Generate One Single Muon
- // This method will generate only one muon.
- // The momentum will be randomly flat distributed if
- // the paremeter "withFlatMomentum" is set to kTRUE,
- // otherwise the momentum will generate acordingly the parametrization
- // given by
- // and adpted from Bruno Alessandro's implementation with the
- // CERNLIB to AliRoot.
- // The "withFlatMomentum" parameter also will be used to generate
- // the muons with a flat Zenithal angle distribution.
- // Do the smearing here, so that means per track.
-
- Float_t polar[3]= {0,0,0}; // Polarization parameters
- Float_t origin[3];
- Int_t nt;
- Float_t p[3];
- Float_t pmom, pt;
- Float_t random[6];
-
- // Take the azimuth random.
- Rndm(random, 2);
- Float_t azimuth = fAzimuthMin + (fAzimuthMax-fAzimuthMin)*random[0];
- Float_t zenith = fZenithMin + (fZenithMax - fZenithMin)*random[1];
-
- if ( withFlatMomentum ) {
- Rndm(random,3);
- if(TestBit(kMomentumRange)) {
- pmom = -( fPMin + random[0]*(fPMax - fPMin) ); // always downwards.
- pt = pmom*TMath::Sin(zenith*kDegrad);
- } else {
- pt = -( fPtMin + random[1]*(fPtMax - fPtMin)); // always downwards.
- pmom = pt/TMath::Sin(zenith*kDegrad);
- }
-
- } else {
- if ( fMomentumDist ) {
- pmom = -this->GetMomentum(); // Always downwards.
- } else {
- pmom = -fPMin;
- }
- zenith = this->GetZenithAngle(pmom); // In degrees
- pt = pmom*TMath::Sin(zenith*kDegrad);
- }
-
- p[0] = pt*TMath::Sin(azimuth*kDegrad);
- p[1] = pmom*TMath::Cos(zenith*kDegrad);
- p[2] = pt*TMath::Cos(azimuth*kDegrad);
-
- // Finaly the origin, with the smearing
- Rndm(random,6);
- origin[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(zenith*kDegrad)*
- TMath::Sin(azimuth*kDegrad)
- + fOsigma[0]* TMath::Cos(2*random[0]*TMath::Pi())*TMath::Sqrt(-2*TMath::Log(random[1]));
-
- origin[1] = AliCRTConstants::Instance()->Depth();
-
- origin[2] = AliCRTConstants::Instance()->Depth()*TMath::Tan(zenith*kDegrad)*
- TMath::Cos(azimuth*kDegrad)
- + fOsigma[2]* TMath::Cos(2*random[2]*TMath::Pi())*TMath::Sqrt(-2*TMath::Log(random[3]));
-
- // Put the track on the stack.
- PushTrack(fTrackIt,-1,fIpart,p,origin,polar,0,kPPrimary,nt);
-
-}
-
-//____________________________________________________________________________
-void AliGenCRT::GenerateOneMuonBundle()
-{
- //
- // Generate One Muon Bundle method
- // This method will generate a bunch of muons following the
- // procedure of the AliGenScan class.
- // These muons will be generated with flat momentum.
-
- Float_t polar[3]= {0,0,0}; // Polarization parameters
- Float_t origin[3];
- Float_t p[3];
- Int_t nt;
- Float_t pmom;
- Float_t random[6];
-
- Rndm(random, 3);
- Float_t zenith = fZenithMin + (fZenithMax - fZenithMin)*random[1];
- Float_t azimuth = fAzimuthMin + (fAzimuthMax-fAzimuthMin)*random[2];
- //Float_t zenith = 10;
- //Float_t azimuth = 30;
-
- // Generate the kinematics a la AliGenScan (Andreas Morchs)
- Float_t dx, dz;
- if ( fNx > 0 ) {
- dx = fXwidth/fNx;
- } else {
- dx = 1e10;
- //dx = 100.;
- }
-
- if ( fNz > 0 ) {
- dz = fZwidth/fNz;
- } else {
- dz = 1e10;
- //dz = 100.;
- }
-
- origin[0] = AliCRTConstants::Instance()->Depth()*TMath::Tan(zenith*kDegrad)*
- TMath::Sin(azimuth*kDegrad);
- //origin[0] = 0.;
- origin[1] = AliCRTConstants::Instance()->Depth();
- //origin[1] = 900;
- origin[2] = AliCRTConstants::Instance()->Depth()*TMath::Tan(zenith*kDegrad)*
- TMath::Cos(azimuth*kDegrad);
- //origin[2] = 0.;
-
- for (Int_t ix = 0; ix < fNx; ix++ ) {
- for (Int_t iz = 0; iz < fNz; iz++ ) {
- Rndm(random,6);
- origin[0]+=ix*dx+2*(random[1]-0.5)*fOsigma[0];
- origin[2]+=iz*dz+2*(random[2]-0.5)*fOsigma[2];
- if ( random[4] < 0.5 ) {
- origin[0] = -1*origin[0];
- }
- if ( random[5] < 0.5 ) {
- origin[2] = -1*origin[2];
- }
-
- pmom = -(fPMin + random[3] *(fPMax - fPMax) ); // Always downwards
- p[0] = TMath::Sin(zenith*kDegrad)*TMath::Sin(azimuth*kDegrad)*pmom;
- p[1] = TMath::Cos(zenith*kDegrad)*pmom;
- p[2] = TMath::Sin(zenith*kDegrad)*TMath::Cos(azimuth*kDegrad)*pmom;
-
- PushTrack(fTrackIt, -1, fIpart, p, origin, polar, 0, kPPrimary, nt);
- }
-
- }
-
-}
-
-//____________________________________________________________________________
-void AliGenCRT::SetGridRange(Int_t nx,Float_t xwidth, Int_t nz, Float_t zwidth)
-{
- //
- // Define the grid
- // This data shuold be used for Muon bundles generation.
- //
- fXwidth=xwidth;
- fNx=nx;
- fZwidth=zwidth;
- fNz=nz;
-
- // Print a message about the use, if the Mode has not been set, or
- // it has to a different Mode.
- if ( fCRMode != kMuonBundle ) {
- Warning("SetRange","You have been specified a grid to generate muon bundles, but seems that you haven't choose this generation mode, or you have already select a different one");
- fMuonGrid = kTRUE;
- }
-}
-
-//____________________________________________________________________________
-void AliGenCRT::InitApWeightFactors()
-{
- //
- // This factors will be to correct the zenithal angle distribution
- // acording the momentum
-
- //
- // Fill the array for the flux zenith angle dependence.
- // at the index 0 of fAp[] will be the "factor" if we have a muon
- // of 0 GeV.
- Float_t a[6] = {-1.61, -1.50, -1.28, -0.94, -0.61, -0.22};
- Float_t p[6] = { 0., 10., 30., 100., 300., 1000.};
-
- // Get the information from the momentum
- Int_t pEnd = TMath::Abs(TMath::Nint(fPMax/fPResolution)) + 1;
- // Initialize the Array of floats to hold the a(p) factors.
- fAp = new TArrayF(pEnd);
-
- Int_t index = 0;
-
- for (Int_t i = 0; i < pEnd; i++ ) {
- Float_t currentP = ((Float_t)i)*fPResolution;
- if ( currentP < p[1] ) index = 0;
- else if ( currentP >= p[1] && currentP < p[2] ) index = 1;
- else if ( currentP >= p[2] && currentP < p[3] ) index = 2;
- else if ( currentP >= p[3] && currentP < p[4] ) index = 3;
- else if ( currentP >= p[4] ) index = 4;
-
- Float_t ap = (currentP -p[index])*(a[index+1] - a[index])/
- (p[index+1] - p[index]) + a[index];
- fAp->AddAt(ap, i);
- }
-
-}
-
-//___________________________________________________________________________
-void AliGenCRT::InitMomentumGeneration()
-{
- //
- // Initialize a funtion to generate the momentum randomly
- // acording this function.
- //
-
- // Check if we nned to initialize the function
- if ( fPMin != fPMax ) {
-
- // Check also if the function have been defined yet.
- if ( !fMomentumDist ) {
-
- // If not, use this function
- const char* y = "log10(x)";
-
- const char* h1Coef = "[0]*( %s*%s*%s/2 - (5*%s*%s/2) + 3*%s )";
- const char* h2Coef = "[1]*( (-2*%s*%s*%s/3) + (3*%s*%s) - 10*%s/3 + 1 )";
- const char* h3Coef = "[2]*( %s*%s*%s/6 - %s*%s/2 + %s/3 )";
- const char* s2Coef = "[3]*( %s*%s*%s/3 - 2*%s*%s + 11*%s/3 - 2 )";
-
- const char* h = "%s + %s + %s + %s";
- const char* flux = "pow(10., %s)";
- const char* normalizedFlux = "0.86*x*x*x*pow(10., %s)";
- const char* paramNames[4] = {"H1", "H2", "H3", "S1"};
-
- char buffer1[1024];
- char buffer2[1024];
- char buffer3[1024];
- char buffer4[1024];
- char buffer5[1024];
- char buffer6[1024];
- char buffer7[1024];
-
- sprintf(buffer1, h1Coef, y, y, y, y, y, y);
- sprintf(buffer2, h2Coef, y, y, y, y, y, y);
- sprintf(buffer3, h3Coef, y, y, y, y, y, y);
- sprintf(buffer4, s2Coef, y, y, y, y, y, y);
-
- sprintf(buffer5, h, buffer1, buffer2, buffer3, buffer4);
-
- sprintf(buffer6, flux, buffer5);
-
- fMomentumDist = new TF1("fMomentumDist", buffer6, fPMin, fPMax);
- sprintf(buffer7, normalizedFlux, buffer5);
- fUnfoldedMomentumDist = new TF1("fUnfoldedMomentumDist", buffer7, fPMin, fPMax);
- for (Int_t i = 0; i < 4; i++ ) {
- fMomentumDist->SetParName(i, paramNames[i]);
- fUnfoldedMomentumDist->SetParName(i, paramNames[i]);
- }
-
- fMomentumDist->SetParameter(0, 0.133);
- fMomentumDist->SetParameter(1, -2.521);
- fMomentumDist->SetParameter(2, -5.78);
- fMomentumDist->SetParameter(3, -2.11);
-
- fUnfoldedMomentumDist->SetParameter(0, 0.133);
- fUnfoldedMomentumDist->SetParameter(1, -2.521);
- fUnfoldedMomentumDist->SetParameter(2, -5.78);
- fUnfoldedMomentumDist->SetParameter(3, -2.11);
-
- }
-
- }
-
-}
-
-//____________________________________________________________________________
-void AliGenCRT::InitZenithalAngleGeneration()
-{
- //
- // Initalize a distribution function for the zenith angle.
- // This angle will be obtained randomly acording this function.
- // The generated angles will been in degrees.
-
- // Check if we need to create the function.
- if ( fZenithMin != fZenithMax ) {
-
- // Check also if another function have been defined.
- if ( !fZenithDist ) {
-
- // initialize the momentum dependent coefficients, a(p)
- this->InitApWeightFactors();
-
- Int_t pEnd = TMath::Abs(TMath::Nint(fPMax/fPResolution)) + 1;
- char name[26];
- char title[52];
- fPDist = new TClonesArray("TH1F", pEnd);
- TClonesArray &mom = *fPDist;
- TH1F* zenith = 0;
- Float_t weight = 0;
- for ( Int_t i = 0; i < pEnd; i++ ) {
- // Fill the distribution
- sprintf(name, "zenith%d", i+1);
- sprintf(title, "Zenith distribution, p=%f", fPMin+(Float_t)i);
- zenith = new(mom[i]) TH1F(name, title, TMath::Abs(TMath::Nint(fZenithMax-fZenithMin)), TMath::Cos(fZenithMax*TMath::Pi()/180), TMath::Cos(fZenithMin*TMath::Pi()/180));
-
- // Make a loop for the angle and fill the histogram for the weight
- Int_t steps = 1000;
- Float_t value = 0;
- for (Int_t j = 0; j < steps; j++ ) {
- value = TMath::Cos(fZenithMin*TMath::Pi()/180) + (Float_t)j * ( TMath::Cos(fZenithMax*TMath::Pi()/180) - TMath::Cos(fZenithMin*TMath::Pi()/180))/1000;
- weight = 1 + fAp->At(i)*(1 - value);
- zenith->Fill(value, weight);
- }
-
- }
-
- }
-
- }
-
-}
-
-//____________________________________________________________________________
-Float_t AliGenCRT::GetZenithAngle(Float_t mom) const
-{
-
- Float_t zenith = 0.;
- // Check if you need to generate a constant zenith angle.
- if ( !fZenithDist ) {
- // Check if you have defined an array of momentum functions
- if ( fPDist ) {
- Int_t pIndex = TMath::Abs(TMath::Nint(mom));
- TH1F* cosZenithAngle = (TH1F*)fPDist->UncheckedAt(pIndex);
- Float_t tmpzenith = TMath::ACos(cosZenithAngle->GetRandom());
- // Correct the value
- zenith = kRaddeg*tmpzenith;
- return zenith;
- } else {
-
- if ( fCRMode != kMuonFlux ) {
- // If you aren't generating muons obeying any ditribution
- // only generate a flat zenith angle, acording the input settings
- Float_t random[2];
- Rndm(random, 2);
- zenith = fZenithMin + (fZenithMax - fZenithMin)*random[0];
-
- } else {
- // Even if you are generating muons acording some distribution,
- // but you don't want to ...
- zenith = fZenithMin;
-
- }
-
- }
- } else {
- zenith = fZenithDist->GetRandom();
- }
-
- return zenith;
-}
-
-//_____________________________________________________________________________
-Float_t AliGenCRT::GetMomentum() const
-{
- //
- //
- //
- return fMomentumDist->GetRandom();
-}
+++ /dev/null
-#ifndef ALIGENCRT_H
-#define ALIGENCRT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include "AliGenerator.h"
-#include "AliCRTConstants.h"
-
-class TClonesArray;
-class TF1;
-
-class AliGenCRT : public AliGenerator {
- public:
- AliGenCRT();
- AliGenCRT(Int_t npart);
- AliGenCRT(const AliGenCRT& gen);
- virtual ~AliGenCRT();
-
- AliGenCRT& operator= (const AliGenCRT& gen);
-
- virtual void Init();
- virtual void Generate();
- virtual void SetPart(Int_t part) {fIpart = part;}
-
- void SetMode(ECRMode mode) {fCRMode = mode;}
- const TString* GetMode() const {return fCRModeName;}
-
- void SetZenithalAngleRange(Float_t min,Float_t max=0) {fZenithMin=min;fZenithMax=max;}
- void SetAzimuthalAngleRange(Float_t min, Float_t max=0) {fAzimuthMin=min;fAzimuthMax=max;}
-
- void SetGridRange(Int_t nx,Float_t xwidth, Int_t nz, Float_t zwidth);
- Float_t GetMomentumResolution() const {return fPResolution;}
-
- void SetMomentumDistrubutionFunction(TF1 *func) {fMomentumDist=func;}
- void SetZenithalDistributionFunction(TF1 *func) {fZenithDist = func;}
- void SetMomentumResolution(Float_t res=1.) {fPResolution=res;}
-
- Float_t GetMomentum() const;
- Float_t GetZenithAngle(Float_t mom) const;
-
- // The following methods are for testing pourpuses
- TF1* GetMomentumDistibution() const {return fMomentumDist;}
- TF1* GetUnfoldedDistribution() const {return fUnfoldedMomentumDist;}
-
- TClonesArray* GetArray() const {return fPDist;}
-
- protected:
- void InitApWeightFactors();
- void InitMomentumGeneration();
- void InitZenithalAngleGeneration();
- void GenerateOneMuonBundle();
- void GenerateOneSingleMuon(Bool_t withFlatMomentum=kFALSE);
-
- private:
- Int_t fIpart; //! Particle type.
- ECRMode fCRMode; //! Cosmic muons generation method flag
- TString* fCRModeName; //! Cosmic muons generation mode name
-
- Float_t fXwidth; //! X width of the grid
- Int_t fNx; //! Number of divisions in x
- Float_t fZwidth; //! Z widht of the grid
- Int_t fNz; //! Number of divisions in z
- Bool_t fMuonGrid; //! Flag for method (Muon-bundles) checkout
-
- Float_t fZenithMin; //! Minimum zenithal angle.
- Float_t fZenithMax; //! Maximum zenithal angle.
-
- Float_t fAzimuthMin; //! Minimum azimuthal angle.
- Float_t fAzimuthMax; //! Maximum azimuthal angle.
-
- Float_t fPRange; //! Cosmic muon momentum range width in GeVs.
- Float_t fPResolution; //! Momentum resolution in GeVs.
-
- TArrayF* fAp; //! a(p) correction factors for the ang. dist.
-
- TF1* fMomentumDist; //! Function to generate the momentum dist.
- TF1* fUnfoldedMomentumDist; //!
- TF1* fZenithDist; //! Function to generate the zenith angle dist.
-
- TClonesArray* fPDist; //! Array of fZenithDist, to be used by a(p).
-
- ClassDef(AliGenCRT, 1) // Generator for AliCRT class
-};
-#endif // ALIGENCRT_H
+++ /dev/null
-#ifdef __CINT__
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ enum ECRMode;
-#pragma link C++ class AliCRT+;
-#pragma link C++ class AliCRTConstants+;
-#pragma link C++ class AliCRTv0+;
-#pragma link C++ class AliCRTdigit+;
-#pragma link C++ class AliCRThit+;
-#pragma link C++ class AliGenCRT+;
-#pragma link C++ class AliCRTv1+;
-#pragma link C++ class AliCRTModule+;
-
-#endif
+++ /dev/null
-static Int_t eventsPerRun = 100;
-enum PprGeo_t
-{
- kHoles, kNoHoles
-};
-static PprGeo_t geo = kHoles;
-
-void Config()
-{
- // 7-DEC-2000 09:00
- // Switch on Transition Radiation simulation. 6/12/00 18:00
- // iZDC=1 7/12/00 09:00
- // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00
- // Theta range given through pseudorapidity limits 22/6/2001
-
-
-
-
- // Set Random Number seed
- // gRandom->SetSeed(12345);
- TDatime dt;
- UInt_t curtime=dt.Get();
- UInt_t procid=gSystem->GetPid();
- UInt_t seed=curtime-procid;
- gRandom->SetSeed(seed);
- cerr<<"Seed for random number generation= "<<seed<<endl;
- cout<<"Seed for random number generation= "<<seed<<endl;
-
-
- new AliGeant3("C++ Interface to Geant3");
-
- if (!gSystem->Getenv("CONFIG_FILE"))
- {
- TFile *rootfile = new TFile("galice.root", "recreate");
-
- rootfile->SetCompressionLevel(2);
- }
-
- TGeant3 *geant3 = (TGeant3 *) gMC;
-
- //
- // Set External decayer
- AliDecayer *decayer = new AliDecayerPythia();
-
- decayer->SetForceDecay(kAll);
- decayer->Init();
- gMC->SetExternalDecayer(decayer);
- //
- //
- //=======================================================================
- // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
- geant3->SetTRIG(1); //Number of events to be processed
- geant3->SetSWIT(4, 10);
- geant3->SetDEBU(0, 0, 1);
- //geant3->SetSWIT(2,2);
- geant3->SetDCAY(1);
- geant3->SetPAIR(1);
- geant3->SetCOMP(1);
- geant3->SetPHOT(1);
- geant3->SetPFIS(0);
- geant3->SetDRAY(0);
- geant3->SetANNI(1);
- geant3->SetBREM(1);
- geant3->SetMUNU(1);
- geant3->SetCKOV(1);
- geant3->SetHADR(4); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
- geant3->SetLOSS(2);
- geant3->SetMULS(1);
- geant3->SetRAYL(1);
- geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
- geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks
- geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
- geant3->SetERAN(5.e-7);
-
- Float_t cut = 1.e-3; // 1MeV cut by default
- Float_t tofmax = 1.e10;
-
- // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
- geant3->SetCUTS(cut, cut, cut, cut, cut, cut, cut, cut, cut, cut,
- tofmax);
- //
- //=======================================================================
- // ************* STEERING parameters FOR ALICE SIMULATION **************
- // --- Specify event type to be tracked through the ALICE setup
- // --- All positions are in cm, angles in degrees, and P and E in GeV
- if (gSystem->Getenv("CONFIG_NPARTICLES"))
- {
- int nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES"));
- } else
- {
- int nParticles = 50;
- }
-
- AliGenCRT *gener = new AliGenCRT(); // One generation per event
- //TF1* zenithFunc = new TF1("zenith","1/cos(x)", 0. 65.);
- //gener->SetZenithalDistributionFunction(zenithFunc);
- //Float_t tend = 65.*TMath::Pi()/180.;
- //TF1* momFunc = new TF1("momFunc", "x", 10., 1000.);
- //gener->SetMomentumDistrubutionFunction(momFunc);
- gener->SetZenithalAngleRange(0., 65.);
- gener->SetAzimuthalAngleRange(0., 359.);
- gener->SetMomentumResolution(1.); // GeVs
- gener->SetSigma(0,0,0); // Sigma for smearing
- gener->SetMomentumRange(10., 1000.); // in GeVs.
-
- gener->SetPart(kMuonMinus);
- // Two choices:
- // kMuonMinus
- // kMuonPlus
-
- //gener->SetMode(kSingleMuons);// Single muons
- //gener->SetMode(kMuonBundle);
- gener->SetMode(kMuonFlux);
- // three choises
- // kSingleMuons
- // kMuonBundle
- // kMuonFlux <- Not available, yet
-
- // If you choose kMuonBundle, you should set how many particles do you
- // want and in wich region should the muons be generated, for instance
- // if you want to generate n^2 muons, in a square of side 300 cm
- //gener->SetRange(4, 300., 4, 300.);
-
- //gener->SetVertexSmear(kPerEvent); // Set the smearing per Event
-
- gener->Init(); // Intialize the generator.
-
- // Set the tracking limits to include the Molasse
- gAlice->TrackingLimits( 5000, 5000);
-
- //
- // Activate this line if you want the vertex smearing to happen
- // track by track
- //
- //gener->SetVertexSmear(perTrack);
- // Field (L3 0.4 T)
- AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., 1);
- rootfile->cd();
- gAlice->SetField(field);
-
-
- Int_t iABSO = 0;
- Int_t iDIPO = 0;
- Int_t iFMD = 0;
- Int_t iFRAME = 0;
- Int_t iHALL = 0;
- Int_t iITS = 0;
- Int_t iMAG = 0;
- Int_t iMUON = 0;
- Int_t iPHOS = 0;
- Int_t iPIPE = 0;
- Int_t iPMD = 0;
- Int_t iHMPID = 0;
- Int_t iSHIL = 0;
- Int_t iT0 = 0;
- Int_t iTOF = 0;
- Int_t iTPC = 0;
- Int_t iTRD = 0;
- Int_t iZDC = 0;
- Int_t iEMCAL = 0;
- Int_t iCRT = 1;
- Int_t iVZERO = 0;
-
- //=================== Alice BODY parameters =============================
- AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
-
- if (iMAG)
- {
- //=================== MAG parameters ============================
- // --- Start with Magnet since detector layouts may be depending ---
- // --- on the selected Magnet dimensions ---
- AliMAG *MAG = new AliMAG("MAG", "Magnet");
- }
-
-
- if (iABSO)
- {
- //=================== ABSO parameters ============================
- AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
- }
-
- if (iDIPO)
- {
- //=================== DIPO parameters ============================
-
- AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2");
- }
-
- if (iHALL)
- {
- //=================== HALL parameters ============================
-
- AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
- }
-
-
- if (iFRAME)
- {
- //=================== FRAME parameters ============================
-
- AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
- if (geo == kHoles) {
- FRAME->SetHoles(1);
- } else {
- FRAME->SetHoles(0);
- }
- }
-
- if (iSHIL)
- {
- //=================== SHIL parameters ============================
-
- AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2");
- }
-
-
- if (iPIPE)
- {
- //=================== PIPE parameters ============================
-
- AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
- }
-
- if(iITS) {
-
- //=================== ITS parameters ============================
- //
- // As the innermost detector in ALICE, the Inner Tracking System "impacts" on
- // almost all other detectors. This involves the fact that the ITS geometry
- // still has several options to be followed in parallel in order to determine
- // the best set-up which minimizes the induced background. All the geometries
- // available to date are described in the following. Read carefully the comments
- // and use the default version (the only one uncommented) unless you are making
- // comparisons and you know what you are doing. In this case just uncomment the
- // ITS geometry you want to use and run Aliroot.
- //
- // Detailed geometries:
- //
- //
- //AliITS *ITS = new AliITSv5symm("ITS","Updated ITS TDR detailed version with symmetric services");
- //
- //AliITS *ITS = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
- //
- AliITSvPPRasymm *ITS = new AliITSvPPRasymm("ITS","New ITS PPR detailed version with asymmetric services");
- ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
- ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
- // ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det"); // don't touch this parameter if you're not an ITS developer
- ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300]
- ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300]
- ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300]
- ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300]
- ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
- ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
- //
- //AliITSvPPRsymm *ITS = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services");
- //ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
- //ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
- //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer
- //ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [100,300]
- //ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [100,300]
- //ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [150,300]
- //ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [150,300]
- //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
- //ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
- //
- //
- // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful
- // for reconstruction !):
- //
- //
- //AliITSvPPRcoarseasymm *ITS = new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version with asymmetric services");
- //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
- //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
- //
- //AliITS *ITS = new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version with symmetric services");
- //ITS->SetRails(0); // 1 --> rails in ; 0 --> rails out
- //ITS->SetSupportMaterial(0); // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
- //
- //
- //
- // Geant3 <-> EUCLID conversion
- // ============================
- //
- // SetEUCLID is a flag to output (=1) or not to output (=0) both geometry and
- // media to two ASCII files (called by default ITSgeometry.euc and
- // ITSgeometry.tme) in a format understandable to the CAD system EUCLID.
- // The default (=0) means that you dont want to use this facility.
- //
- ITS->SetEUCLID(0);
- }
-
- if (iTPC)
- {
- //============================ TPC parameters ================================
- // --- This allows the user to specify sectors for the SLOW (TPC geometry 2)
- // --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper)
- // --- sectors are specified, any value other than that requires at least one
- // --- sector (lower or upper)to be specified!
- // --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
- // --- sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
- // --- SecLows - number of lower sectors specified (up to 6)
- // --- SecUps - number of upper sectors specified (up to 12)
- // --- Sens - sensitive strips for the Slow Simulator !!!
- // --- This does NOT work if all S or L-sectors are specified, i.e.
- // --- if SecAL or SecAU < 0
- //
- //
- //-----------------------------------------------------------------------------
-
- // gROOT->LoadMacro("SetTPCParam.C");
- // AliTPCParam *param = SetTPCParam();
- AliTPC *TPC = new AliTPCv2("TPC", "Default");
-
- // All sectors included
- TPC->SetSecAL(-1);
- TPC->SetSecAU(-1);
-
- }
-
-
- if (iTOF) {
- if (geo == kHoles) {
- //=================== TOF parameters ============================
- AliTOF *TOF = new AliTOFv2FHoles("TOF", "TOF with Holes");
- } else {
- AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF");
- }
- }
-
-
- if (iHMPID)
- {
- //=================== HMPID parameters ===========================
- AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
-
- }
-
-
- if (iZDC)
- {
- //=================== ZDC parameters ============================
-
- AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC");
- }
-
- if (iTRD)
- {
- //=================== TRD parameters ============================
-
- AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
-
- // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
- TRD->SetGasMix(1);
- if (geo == kHoles) {
- // With hole in front of PHOS
- TRD->SetPHOShole();
- // With hole in front of HMPID
- TRD->SetHMPIDhole();
- }
- // Switch on TR
- AliTRDsim *TRDsim = TRD->CreateTR();
- }
-
- if (iFMD)
- {
- //=================== FMD parameters ============================
- AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
- FMD->SetRingsSi1(256);
- FMD->SetRingsSi2(128);
- FMD->SetSectorsSi1(20);
- FMD->SetSectorsSi2(40);
- }
-
- if (iMUON)
- {
- //=================== MUON parameters ===========================
-
- AliMUON *MUON = new AliMUONv1("MUON", "default");
- }
- //=================== PHOS parameters ===========================
-
- if (iPHOS)
- {
- AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
- }
-
-
- if (iPMD)
- {
- //=================== PMD parameters ============================
- AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
- }
-
- if (iT0)
- {
- //=================== T0 parameters ============================
- AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
- }
-
- if (iEMCAL)
- {
- //=================== EMCAL parameters ============================
- AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
- }
-
- if (iCRT)
- {
- //=================== CRT parameters ============================
- //AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
- AliCRT* CRT = new AliCRTv1("CRT", "Special version Only with the CRT");
- }
-
- if (iVZERO)
- {
- //=================== CRT parameters ============================
- AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
- }
-
-}
-
-Float_t EtaToTheta(Float_t arg){
- return (180./TMath::Pi())*2.*atan(exp(-arg));
-}
+++ /dev/null
-void DrawCRT()
-{
- gMC->Gsatt("*", "seen", -1);
- gMC->Gsatt("alic", "seen", 0);
- gROOT->LoadMacro("ViewCRT.C");
- gInterpreter->ProcessLine("ViewCRT()");
- //gMC->Gdopt("proj", "pers");
- gMC->Gdopt("hide", "on");
- gMC->Gdopt("shad", "on");
- gMC->Gsatt("*", "fill", 7);
- gMC->SetClipBox(".");
- gMC->SetClipBox("ALIC", 0, 3000, -3000, 3000, -6000, 6000);
- gMC->DefaultRange();
- gMC->Gdraw("alic", 30, 40, 0, 10, 9.5, .0095, .0095);
- //gMC->Gdraw("alic", 30, 40, 0, -30, -60, .09, .09); //Zoom right side
- //gMC->Gdraw("alic", 30, 30, 0, 10, -10, .03, .03); // Zoom right side
- gMC->Gdhead(1111, "View of CRT (ACORDE)");
- gMC->Gdman(18, 4, "MAN");
-}
+++ /dev/null
-void ViewCRT()
-{
- gMC->Gsatt("ALIC","seen",0);
-
- gMC->Gsatt("L3MO","seen",0); // L3 Magnet, Mother
- gMC->Gsatt("L3CO","seen",1); // Coils
- gMC->Gsatt("L3C1","seen",1); // Coils
- gMC->Gsatt("L3YO","seen",1); // Yoke
- gMC->Gsatt("L3DO","seen",0); // return Yoke (DOOR)
- gMC->Gsatt("L3FR","seen",1); // DOOR
- gMC->Gsatt("L3IR","seen",0); // Inner layer
- gMC->Gsatt("L3O1","seen",1); // Door opening
- gMC->Gsatt("L3O2","seen",1); // Door opening
-
- gMC->Gsatt("CRT1", "seen", 0); // CRT Mother
- gMC->Gsatt("CRT2", "seen", 0); // Module air box
- gMC->Gsatt("CRT3", "seen", 1); // Scintillators
- gMC->Gsatt("CRT3", "colo", 2); // Scintillators
- gMC->Gsatt("CRT4", "seen", 1); // Aluminium frame (long bars)
- gMC->Gsatt("CRT4", "colo", 3); //
- gMC->Gsatt("CRT5", "seen", 1); // Aluminium frame (short bars)
- gMC->Gsatt("CRT5", "colo", 3); //
- gMC->Gsatt("CRT6", "seen", 1); // Module support
- gMC->Gsatt("CRT6", "colo", 3); //
-}
+++ /dev/null
-SRCS = AliCRT.cxx AliCRTConstants.cxx AliCRTv0.cxx AliCRTdigit.cxx \
- AliCRThit.cxx AliGenCRT.cxx AliCRTv1.cxx AliCRTModule.cxx
-
-HDRS:= $(SRCS:.cxx=.h)
-
-DHDR:=CRTLinkDef.h
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
rl->CdGAFile();
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
TPCbase TPCsim TPCrec TPCfast \
ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase \
TRDsim TRDrec TRDfast \
- FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec CRT \
+ FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSbase PHOSsim PHOSrec ACORDE \
HMPIDbase HMPIDrec HMPIDsim \
ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec \
EMCALbase EMCALsim EMCALrec EMCALjet \
gSystem->Load("libZDCbase");
gSystem->Load("libZDCsim");
gSystem->Load("libZDCrec");
- gSystem->Load("libCRT");
+ gSystem->Load("libACORDE");
gSystem->Load("libVZERObase");
gSystem->Load("libVZEROsim");
gSystem->Load("libVZEROrec");
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv1.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv2.h"
#endif
// Used detectors
//
Bool_t useABSO = kFALSE;
- Bool_t useCRT = kFALSE;
+ Bool_t useACORDE = kFALSE;
Bool_t useDIPO = kFALSE;
Bool_t useFMD = kTRUE;
Bool_t useFRAME = kFALSE;
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25");
}
- if (useCRT) {
- // =================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ if (useACORDE) {
+ // =================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (useVZERO) {
enum EVersOpts {kNo=101,kVer0,kVer1,kVer2,kTest, kDeclust=301,kSagita,kFeedback,kSecRad,kQe0=400,kQeNorm,kOptics};
enum EGenTypes {kGunZ=1,kGun1,kGun7,kBox,kHijing,kHijingPara,kPythia,kRichLib,kNotUsed=999};
- enum EDetectors {kPIPE=1,kITS,kTPC,kTRD,kTOF,kFRAME,kMAG,kCRT,kHALL,kPHOS,kT0,kFMD,kABSO,kPMD,kDIPO,kEMCAL,kVZERO,kMUON,kZDC,kSHILD};
+ enum EDetectors {kPIPE=1,kITS,kTPC,kTRD,kTOF,kFRAME,kMAG,kACORDE,kHALL,kPHOS,kT0,kFMD,kABSO,kPMD,kDIPO,kEMCAL,kVZERO,kMUON,kZDC,kSHILD};
enum EProcesses {kDCAY=1,kPAIR,kCOMP,kPHOT,kPFIS,kDRAY,kANNI,kBREM,kMUNU,kCKOV,kHADR,kLOSS,kMULS,kRAYL,kALL};
enum EBatchFlags{kPrim=555,kTransport,kAll,kOnly,kRawDdl,kRawDate,kRawRoot,kVertex,kTrack,kHlt,kEsd,kAlign};
enum EMagField {kFld0,kFld2,kFld4,kFld5,kFld_2,kFld_4,kFld_5};
fDetBG->Connect("Released(Int_t)","RichConfig",this,"DetRemSlot(Int_t)");
new TGCheckButton(fDetBG,"PIPE" ,kPIPE)); new TGCheckButton(fDetBG,"ITS" ,kITS)); new TGCheckButton(fDetBG,"TPC" ,kTPC));
new TGCheckButton(fDetBG,"TRD" ,kTRD)); new TGCheckButton(fDetBG,"TOF" ,kTOF)); new TGCheckButton(fDetBG,"FRAME" ,kFRAME));
- new TGCheckButton(fDetBG,"MAG" ,kMAG)); new TGCheckButton(fDetBG,"CRT" ,kCRT)); new TGCheckButton(fDetBG,"HALL" ,kHALL));
+ new TGCheckButton(fDetBG,"MAG" ,kMAG)); new TGCheckButton(fDetBG,"ACORDE" ,kACORDE)); new TGCheckButton(fDetBG,"HALL" ,kHALL));
new TGCheckButton(fDetBG,"PHOS" ,kPHOS)); new TGCheckButton(fDetBG,"T0" ,kT0)); new TGCheckButton(fDetBG,"FMD" ,kFMD));
new TGCheckButton(fDetBG,"ABSO" ,kABSO)); new TGCheckButton(fDetBG,"PMD" ,kPMD)); new TGCheckButton(fDetBG,"DIPO" ,kDIPO));
new TGCheckButton(fDetBG,"EMCAL" ,kEMCAL)); new TGCheckButton(fDetBG,"VZERO" ,kVZERO)); new TGCheckButton(fDetBG,"MUON" ,kMUON));
//different phase space detectors
if(fDetBG->GetButton(kPHOS )->GetState()) fprintf(pF,"\n new AliPHOSv1(\"PHOS\",\"IHEP\");\n");
if(fDetBG->GetButton(kEMCAL)->GetState()) fprintf(pF,"\n new AliEMCALv1(\"EMCAL\",\"G56_2_55_19_104_14\");\n");
- if(fDetBG->GetButton(kCRT )->GetState()) fprintf(pF,"\n new AliCRTv0(\"CRT\",\"normal ACORDE\");\n");
+ if(fDetBG->GetButton(kACORDE )->GetState()) fprintf(pF,"\n new AliACORDEv0(\"ACORDE\",\"normal ACORDE\");\n");
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void RichConfig::GuiBatch(TGHorizontalFrame *pMainF)
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
runLoader->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
endif
ALIROOTMODULES := STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS \
- CRT HMPID T0 STRUCT EVGEN RALICE VZERO \
+ ACORDE HMPID T0 STRUCT EVGEN RALICE VZERO \
THijing MEVSIM TMEVSIM THbtp HBTP EMCAL HBTAN \
THerwig TEPEMGEN EPEMGEN FASTSIM TPHIC RAW MONITOR ANALYSIS \
JETAN HLT LHC EVE
ROOTPLIBS := -lEGPythia6
ALILIBS := -L$(LIBDIR) -lMUON -lTPC -lPMD -lTRD -lFMD -lTOF \
- -lITS -lPHOS -lCRT -lHMPID -lVZERO -lZDC -lSTRUCT \
+ -lITS -lPHOS -lACORDE -lHMPID -lVZERO -lZDC -lSTRUCT \
-lT0 -lEVGEN -lSTEER
LIBS := $(ROOTCLIBS) $(ROOTPLIBS) $(SYSLIBS)
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv5.h"
#endif
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv5("VZERO", "normal VZERO");
}
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCALArch1a");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
"T0",
"VZERO", // Name to be changed to V0 ?
"ZDC",
- "CRT", // Name to be changed to ACCORDE
+ "ACORDE",
"TRG",
"EMCAL",
"HLT"
Int_t ndet = det->GetEntriesFast();
UInt_t idmask = 0;
- if( ndet >= 8 ) { // All detectors, should be 9 but CRT is not implemented yet
+ if( ndet >= 8 ) { // All detectors, should be 9 but ACORDE is not implemented yet
idmask = 1;
return idmask;
}
//_____________________________________________________________________________
-const char* AliReconstruction::fgkDetectorName[AliReconstruction::fgkNDetectors] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "CRT", "HLT"};
+const char* AliReconstruction::fgkDetectorName[AliReconstruction::fgkNDetectors] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT"};
//_____________________________________________________________________________
AliReconstruction::AliReconstruction(const char* gAliceFilename, const char* cdbUri,
//_____________________________________________________________________________
const char* AliTriggerDescriptor::fgkDetectorName[AliTriggerDescriptor::fgkNDetectors] =
- { "ITS", "TRD", "PHOS", "EMCAL", "MUON", "ZDC", "T0", "VZERO", "CRT", "TOF" };
+ { "ITS", "TRD", "PHOS", "EMCAL", "MUON", "ZDC", "T0", "VZERO", "ACORDE", "TOF" };
const TString AliTriggerDescriptor::fgkDescriptorFileName("/data/triggerDescriptors.root");
// Define a Cluster Detector
//descrip.AddDetectorCluster( "ALL" );
- descrip.AddDetectorCluster( "ITS TRD PHOS EMCAL MUON ZDC T0 VZERO" ); // no CRT yet
+ descrip.AddDetectorCluster( "ITS TRD PHOS EMCAL MUON ZDC T0 VZERO" ); // no ACORDE yet
// Define the trigger conditions form Table 4.2 TDR DAQ, Trigger pag 59
"EMCALJetLPt_SC", "EMCAL Jet Low Pt Semi Central",
(ULong64_t)0x1 << 32 );
// 34
- descrip.AddCondition( "ZDC_EMD_L1", // CRT_L0
+ descrip.AddCondition( "ZDC_EMD_L1", // ACORDE_L0
"ZDC_diss", "ZDC EMD Event",
(ULong64_t)0x1 << 33 );
// 35
-// descrip.AddCondition( "CRT_cosmic_L0",
-// "CRT_cosmic", "CRT cosmic telescope",
+// descrip.AddCondition( "ACORDE_cosmic_L0",
+// "ACORDE_cosmic", "ACORDE cosmic telescope",
// (ULong64_t)0x1 << 34 );
// 36
// Define a Cluster Detector
//descrip.AddDetectorCluster( "ALL" );
- descrip.AddDetectorCluster( "ITS T0 VZERO MUON TOF" ); // no CRT yet
+ descrip.AddDetectorCluster( "ITS T0 VZERO MUON TOF" ); // no ACORDE yet
// standalong V0 inputs
descrip.AddCondition( "VZERO_LEFT", "VZERO_LEFT", "VZERO A (Left)", (ULong64_t)0x1 );
dALIC[8]=0;
dALIC[9]=2000;
gMC->Gsvolu("ALIC","PGON",idtmed[1],dALIC,10);
- } else if ( gAlice->GetModule("CRT")) {
+ } else if ( gAlice->GetModule("ACORDE")) {
//
// If the Cosmic Ray Trigger is present we need a large box
//
} else {
//
- // If the ZDC and CRT are not present make just a BOX
+ // If the ZDC and ACORDE are not present make just a BOX
//
dALIC[0]=2000;
dALIC[1]=2000;
gAlice->SetField(field);
Int_t iABSO = 1;
- Int_t iCRT = 1;
+ Int_t iACORDE = 1;
Int_t iDIPO = 1;
Int_t iFMD = 1;
Int_t iFRAME = 1;
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
}
}
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv1.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv3.h"
#endif
Int_t iZDC = 0;
Int_t iEMCAL = 0;
Int_t iVZERO = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
//=================== Alice BODY parameters =============================
AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "G56_2_55_19");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv3("VZERO", "normal VZERO");
}
Int_t iTRD = 0;
Int_t iZDC = 0;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "G56_2_55_19_104_14");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv6.h"
#endif
gAlice->SetField(field);
Int_t iABSO = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iDIPO = 0;
Int_t iEMCAL = 0;
Int_t iFMD = 0;
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv6("VZERO", "normal VZERO");
}
}
Int_t iTRD = 0;
Int_t iZDC = 1;
Int_t iEMCAL = 0;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 0;
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv2("VZERO", "normal VZERO");
}
ALIROOT/module.mk: ALIROOT/binaliroot.pkg
ANALYSIS/module.mk: ANALYSIS/libANALYSIS.pkg ANALYSIS/libANALYSIS_NEW.pkg ANALYSIS/libANALYSIS_EXTRA.pkg ANALYSIS/libAliengui.pkg ANALYSIS/binaliengui.pkg
-CRT/module.mk: CRT/libCRT.pkg
+ACORDE/module.mk: ACORDE/libACORDE.pkg
EMCAL/module.mk: EMCAL/libEMCALbase.pkg EMCAL/libEMCALsim.pkg EMCAL/libEMCALrec.pkg
EPEMGEN/module.mk: EPEMGEN/libEPEMGEN.pkg
EVGEN/module.mk: EVGEN/libEVGEN.pkg
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv7.h"
#endif
Int_t iTRD = 1;
Int_t iZDC = 1;
Int_t iEMCAL = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 1;
rl->CdGAFile();
//=================== Alice BODY parameters =============================
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
}
#include "PHOS/AliPHOSv1.h"
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
-#include "CRT/AliCRTv1.h"
+#include "ACORDE/AliACORDEv1.h"
#endif
void Config()
gAlice->SetField(field);
Int_t iABSO=0;
- Int_t iCRT=0;
+ Int_t iACORDE=0;
Int_t iDIPO=0;
Int_t iFMD=0;
Int_t iFRAME=0;
AliZDC *ZDC = new AliZDCv1("ZDC","normal ZDC");
}
- if(iCRT) {
- //=================== CRT parameters ============================
+ if(iACORDE) {
+ //=================== ACORDE parameters ============================
- AliCRT *CRT = new AliCRTv1("CRT","normal CRT");
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE","normal ACORDE");
}
if(iTRD) {
#include "PHOS/AliPHOSv1.h"
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
-#include "CRT/AliCRTv1.h"
+#include "ACORDE/AliACORDEv1.h"
#endif
void Config()
gAlice->SetField(field);
Int_t iABSO=0;
- Int_t iCRT=0;
+ Int_t iACORDE=0;
Int_t iDIPO=0;
Int_t iFMD=0;
Int_t iFRAME=0;
AliZDC *ZDC = new AliZDCv1("ZDC","normal ZDC");
}
- if(iCRT) {
- //=================== CRT parameters ============================
+ if(iACORDE) {
+ //=================== ACORDE parameters ============================
- AliCRT *CRT = new AliCRTv1("CRT","normal CRT");
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE","normal ACORDE");
}
if(iTRD) {
}
- //=================== CRT parameters ===========================
+ //=================== ACORDE parameters ===========================
- if(iCRT) {
- AliCRT *CRT = new AliCRTv1("CRT","Normal CRTGPS2");
+ if(iACORDE) {
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE","Normal ACORDEGPS2");
}
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv1.h"
+#include "ACORDE/AliACORDEv1.h"
#endif
void Config()
//Last number indicates the scale factor
Int_t iABSO = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iDIPO = 1;
Int_t iFMD = 0;
Int_t iFRAME = 1;
AliZDC *ZDC = new AliZDCv1("ZDC", "normal ZDC");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
- AliCRT *CRT = new AliCRTv1("CRT", "normal CRT");
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
}
if (iTRD)
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv7.h"
#endif
Int_t iZDC = 1;
Int_t iEMCAL = 1;
Int_t iVZERO = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
//=================== Alice BODY parameters =============================
AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
}
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
#include "EMCAL/AliEMCALv2.h"
-#include "CRT/AliCRTv0.h"
+#include "ACORDE/AliACORDEv0.h"
#include "VZERO/AliVZEROv7.h"
#endif
Int_t iABSO = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iDIPO = 1;
Int_t iEMCAL = 1;
Int_t iFMD = 1;
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ //=================== ACORDE parameters ============================
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
}
}
#include "PHOS/AliPHOSv1.h"
#include "PMD/AliPMDv1.h"
#include "T0/AliT0v1.h"
-#include "CRT/AliCRTv1.h"
+#include "ACORDE/AliACORDEv1.h"
#endif
//--- Heavy Flavour Production ---
// By default all ALICE is switched off
Int_t iABSO=0;
- Int_t iCRT=0;
+ Int_t iACORDE=0;
Int_t iDIPO=0;
Int_t iFMD=0;
Int_t iFRAME=0;
AliZDC *ZDC = new AliZDCv1("ZDC","normal ZDC");
}
- if(iCRT) {
- //=================== CRT parameters ============================
+ if(iACORDE) {
+ //=================== ACORDE parameters ============================
- AliCRT *CRT = new AliCRTv1("CRT","normal CRT");
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE","normal ACORDE");
}
if(iTRD) {
}
- //=================== CRT parameters ===========================
+ //=================== ACORDE parameters ===========================
- if(iCRT) {
- AliCRT *CRT = new AliCRTv1("CRT","Normal CRTGPS2");
+ if(iACORDE) {
+ AliACORDE *ACORDE = new AliACORDEv1("ACORDE","Normal ACORDEGPS2");
}
}
TString dets = "EMCAL,FMD,ITS,MUON,PHOS,PMD,HMPID,T0,TOF,TPC,TRD,VZERO,ZDC";
-// TString dets = "ABSO,DIPO,FMD,FRAME,HALL,ITS,MAG,MUON,PHOS,PIPE,PMD,HMPID,SHIL,T0,TOF,TPC,TRD,ZDC,EMCAL,CRT,VZERO";
+// TString dets = "ABSO,DIPO,FMD,FRAME,HALL,ITS,MAG,MUON,PHOS,PIPE,PMD,HMPID,SHIL,T0,TOF,TPC,TRD,ZDC,EMCAL,ACORDE,VZERO";
TObjArray *detArray = dets.Tokenize(',');
TIter iter(detArray);
TObjString *ostr;
Int_t iTRD = 1;
Int_t iZDC = 1;
Int_t iEMCAL = 1;
- Int_t iCRT = 0;
+ Int_t iACORDE = 0;
Int_t iVZERO = 1;
// ONLY FOR GEANT4
// Exclude detectors with temporary problem
- iCRT = 0;
+ iACORDE = 0;
iEMCAL = 0;
// END OF ONLY FOR GEANT4
AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "SHISH_77_TRD1_2X2_FINAL_110DEG");
}
- if (iCRT)
+ if (iACORDE)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
- AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
+ AliACORDE *ACORDE = new AliACORDEv0("ACORDE", "normal ACORDE");
}
if (iVZERO)
{
- //=================== CRT parameters ============================
+ //=================== ACORDE parameters ============================
AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
}
gSystem->Load("libZDCbase");
gSystem->Load("libZDCsim");
gSystem->Load("libZDCrec");
- gSystem->Load("libCRT");
+ gSystem->Load("libACORDE");
gSystem->Load("libVZERObase");
gSystem->Load("libVZEROsim");
gSystem->Load("libVZEROrec");
gSystem->Load("libZDCbase");
gSystem->Load("libZDCsim");
gSystem->Load("libZDCrec");
- gSystem->Load("libCRT");
+ gSystem->Load("libACORDE");
gSystem->Load("libVZERObase");
gSystem->Load("libVZEROsim");
gSystem->Load("libVZEROrec");
gSystem->Load("libT0rec");
gSystem->Load("libZDCbase");
gSystem->Load("libZDCsim");
- gSystem->Load("libCRT");
+ gSystem->Load("libACORDE");
gSystem->Load("libVZERObase");
gSystem->Load("libVZEROsim");
gSystem->Load("libEMCALbase");