CMS 3D CMS Logo

Classes | Public Member Functions | Private Attributes

HFGflash Class Reference

#include <HFGflash.h>

List of all members.

Classes

struct  Hit

Public Member Functions

std::vector< HitgfParameterization (G4Step *aStep, bool &ok, bool onlyLong=false)
 HFGflash (edm::ParameterSet const &p)
virtual ~HFGflash ()

Private Attributes

TH2F * em_2d
TH2F * em_2d_sd
TH1F * em_incE
TH1F * em_lateral
TH1F * em_lateral_sd
TH1F * em_long
TH1F * em_long_sd
TH1F * em_nSpots_sd
TH2F * em_ratio
TH2F * em_ratio_selected
TH1F * em_ssp_rho
TH1F * em_ssp_z
TH2F * em_ze
TH1F * em_ze_ratio
G4double energyScale [Gflash::kNumberCalorimeter]
G4double energyToDeposit
Gflash::CalorimeterNumber jCalorimeter
G4double lateralPar [4]
G4double longEcal [Gflash::NPar]
G4double longHcal [Gflash::NPar]
G4int showerType
G4double theBField
bool theFillHisto
G4Navigator * theGflashNavigator
G4Step * theGflashStep
G4TouchableHandle theGflashTouchableHandle
GflashTrajectorytheHelix
bool theWatcherOn

Detailed Description

Definition at line 29 of file HFGflash.h.


Constructor & Destructor Documentation

HFGflash::HFGflash ( edm::ParameterSet const &  p)

Definition at line 34 of file HFGflash.cc.

References em_2d, em_2d_sd, em_incE, em_lateral, em_lateral_sd, em_long, em_long_sd, em_nSpots_sd, em_ratio, em_ratio_selected, em_ssp_rho, em_ssp_z, em_ze, em_ze_ratio, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), edm::Service< T >::isAvailable(), jCalorimeter, Gflash::kHF, TFileDirectory::make(), theBField, theFillHisto, theGflashNavigator, theGflashStep, theGflashTouchableHandle, theHelix, and theWatcherOn.

                                            {

  edm::ParameterSet m_HF  = p.getParameter<edm::ParameterSet>("HFGflash");
  theBField               = m_HF.getUntrackedParameter<double>("BField", 3.8);
  theWatcherOn            = m_HF.getUntrackedParameter<bool>("WatcherOn",true);
  theFillHisto            = m_HF.getUntrackedParameter<bool>("FillHisto",true);
  edm::LogInfo("HFShower") << "HFGFlash:: Set B-Field to " << theBField
                           << ", WatcherOn to " << theWatcherOn
                           << " and FillHisto to " << theFillHisto;

  theHelix = new GflashTrajectory;
  theGflashStep = new G4Step();
  theGflashNavigator = new G4Navigator();
  //  theGflashNavigator = 0;
  theGflashTouchableHandle = new G4TouchableHistory();

#ifdef DebugLog
  if (theFillHisto) {
    edm::Service<TFileService> tfile;
    if ( tfile.isAvailable() ) {
      TFileDirectory showerDir = tfile->mkdir("GflashEMShowerProfile");

      em_incE = showerDir.make<TH1F>("em_incE","Incoming energy (GeV)",500,0,500.);
      em_ssp_rho    = showerDir.make<TH1F>("em_ssp_rho","Shower starting position;#rho (cm);Number of Events",100,100.0,200.0);
      em_ssp_z      = showerDir.make<TH1F>("em_ssp_z","Shower starting position;z (cm);Number of Events",2000,0.0,2000.0);
      em_long       = showerDir.make<TH1F>("em_long","Longitudinal Profile;Radiation Length;Number of Spots",800,800.0,1600.0);
      em_lateral    = showerDir.make<TH1F>("em_lateral","Lateral Profile;Radiation Length;Moliere Radius",100,0.0,5.0);
      em_2d         = showerDir.make<TH2F>("em_2d","Lateral Profile vs. Shower Depth;Radiation Length;Moliere Radius",800,800.0,1600.0,100,0.0,5.0);
      em_long_sd    = showerDir.make<TH1F>("em_long_sd","Longitudinal Profile in Sensitive Detector;Radiation Length;Number of Spots",800,800.0,1600.0);
      em_lateral_sd = showerDir.make<TH1F>("em_lateral_sd","Lateral Profile vs. Shower Depth in Sensitive Detector;Radiation Length;Moliere Radius",100,0.0,5.0);
      em_2d_sd      = showerDir.make<TH2F>("em_2d_sd","Lateral Profile vs. Shower Depth in Sensitive Detector;Radiation Length;Moliere Radius",800,800.0,1600.0,100,0.0,5.0);
      em_ze         = showerDir.make<TH2F>("em_ze","Profile vs. Energy;Radiation Length;Moliere Radius",800,800.0,1600.0,1000,0.0,1.0);
      em_ratio      = showerDir.make<TH2F>("em_ratio","Profile vs. Energy;Radiation Length;Moliere Radius",800,800.0,1600.0,1000,0.0,100.0);
      em_ratio_selected      = showerDir.make<TH2F>("em_ratio_selected","Profile vs. Energy;Radiation Length;Moliere Radius",800,800.0,1600.0,1000,0.0,100.0);
      em_nSpots_sd  = showerDir.make<TH1F>("em_nSpots_sd","Number of Gflash Spots in Sensitive Detector;Number of Spots;Number of Events",100,0.0,100);
      em_ze_ratio   = showerDir.make<TH1F>("em_ze_ratio","Ratio of Energy and Z Position",1000,0.0,0.001);
    } else {
      theFillHisto = false;
      edm::LogInfo("HFShower") << "HFGFlash::No file is available for saving"
                               << " histos so the flag is set to false";
    }
  }
#endif
  jCalorimeter = Gflash::kHF;

}
HFGflash::~HFGflash ( ) [virtual]

Definition at line 81 of file HFGflash.cc.

References theGflashNavigator, theGflashStep, and theHelix.


Member Function Documentation

std::vector< HFGflash::Hit > HFGflash::gfParameterization ( G4Step *  aStep,
bool &  ok,
bool  onlyLong = false 
)

Definition at line 88 of file HFGflash.cc.

References abs, alpha, beta, DeDxDiscriminatorTools::charge(), funct::cos(), HFGflash::Hit::depth, alignCSCRings::e, HFGflash::Hit::edep, em_2d, em_incE, em_lateral, em_long, em_nSpots_sd, em_ssp_rho, em_ssp_z, relval_parameters_module::energy, funct::exp(), GflashTrajectoryPoint::getCrossUnitVector(), GflashTrajectory::getGflashTrajectoryPoint(), GflashTrajectoryPoint::getOrthogonalUnitVector(), GflashTrajectory::getPathLengthAtZ(), GflashTrajectoryPoint::getPosition(), GflashTrajectory::initializeTrajectory(), jCalorimeter, Gflash::kHF, funct::log(), LogDebug, max(), min, p1, p2, p3, HFGflash::Hit::position, funct::pow(), Gflash::radLength, rho, Gflash::rMoliere, funct::sin(), mathSSE::sqrt(), metsig::tau, theBField, theFillHisto, theGflashNavigator, theHelix, HFGflash::Hit::time, tmax, and detailsBasic3DVector::y.

Referenced by HFShowerParam::getHits().

                                                                                          {
  double tempZCalo = 26;  // Gflash::Z[jCalorimeter]
  double hfcriticalEnergy = 0.021;  // Gflash::criticalEnergy

  std::vector<HFGflash::Hit> hit;
  HFGflash::Hit oneHit;

  G4StepPoint * preStepPoint  = aStep->GetPreStepPoint(); 
  //G4StepPoint * postStepPoint = aStep->GetPostStepPoint(); 
  G4Track *     track    = aStep->GetTrack();
  // Get Z-direction 
  const G4DynamicParticle *aParticle = track->GetDynamicParticle();
  G4ThreeVector momDir = aParticle->GetMomentumDirection();

  G4ThreeVector hitPoint = preStepPoint->GetPosition();   
  G4String      partType = track->GetDefinition()->GetParticleName();
  //  int           parCode  = track->GetDefinition()->GetPDGEncoding();

  // This part of code is copied from the original GFlash Fortran code.
  // reference : hep-ex/0001020v1

  const G4double energyCutoff     = 1; 
  const G4int    maxNumberOfSpots = 10000000;

  G4ThreeVector showerStartingPosition = track->GetPosition()/cm;
  G4ThreeVector showerMomentum = preStepPoint->GetMomentum()/GeV;
  jCalorimeter = Gflash::kHF;

  G4double logEinc = std::log((preStepPoint->GetTotalEnergy())/GeV);

  G4double y = ((preStepPoint->GetTotalEnergy())/GeV) / hfcriticalEnergy; // y = E/Ec, criticalEnergy is in GeV
  G4double logY = std::log(y);


  G4double nSpots = 93.0 * std::log(tempZCalo) * ((preStepPoint->GetTotalEnergy())/GeV); // total number of spot due linearization
  if(preStepPoint->GetTotalEnergy()/GeV < 1.6)  nSpots = 140.4 * std::log(tempZCalo) * std::pow(((preStepPoint->GetTotalEnergy())/GeV),0.876); 


  //   // implementing magnetic field effects
  double charge = track->GetStep()->GetPreStepPoint()->GetCharge();
  theHelix->initializeTrajectory(showerMomentum,showerStartingPosition,charge,theBField);

  G4double pathLength0 = theHelix->getPathLengthAtZ(showerStartingPosition.getZ());
  G4double pathLength = pathLength0; // this will grow along the shower development

  //--- 2.2  Fix intrinsic properties of em. showers.

  G4double fluctuatedTmax = std::log(logY - 0.7157);
  G4double fluctuatedAlpha= std::log(0.7996 +(0.4581 + 1.8628/tempZCalo)*logY);

  G4double sigmaTmax = 1.0/( -1.4  + 1.26 * logY);
  G4double sigmaAlpha = 1.0/( -0.58 + 0.86 * logY);
  G4double rho = 0.705  - 0.023 * logY;
  G4double sqrtPL = std::sqrt((1.0+rho)/2.0);
  G4double sqrtLE = std::sqrt((1.0-rho)/2.0);

  G4double norm1 = G4RandGauss::shoot();
  G4double norm2 = G4RandGauss::shoot();
  G4double tempTmax = fluctuatedTmax + sigmaTmax*(sqrtPL*norm1 + sqrtLE*norm2);
  G4double tempAlpha = fluctuatedAlpha + sigmaAlpha*(sqrtPL*norm1 - sqrtLE*norm2);

  // tmax, alpha, beta : parameters of gamma distribution
  G4double tmax = std::exp(tempTmax);
  G4double alpha = std::exp(tempAlpha);
  G4double beta = (alpha - 1.0)/tmax;

  if (!alpha)          return hit; 
  if (!beta)           return hit;
  if (alpha < 0.00001) return hit;
  if (beta < 0.00001)  return hit;
 
  // spot fluctuations are added to tmax, alpha, beta
  G4double averageTmax = logY-0.858;
  G4double averageAlpha = 0.21+(0.492+2.38/tempZCalo)*logY;
  G4double spotTmax  = averageTmax * (0.698 + .00212*tempZCalo);
  G4double spotAlpha= averageAlpha * (0.639 + .00334*tempZCalo);
  G4double spotBeta = (spotAlpha-1.0)/spotTmax;

  if (!spotAlpha)          return hit;
  if (!spotBeta)           return hit;
  if (spotAlpha < 0.00001) return hit;
  if (spotBeta < 0.00001)  return hit;

#ifdef DebugLog  
  LogDebug("HFShower") << "Incoming energy = " << ((preStepPoint->GetTotalEnergy())/GeV) << " Position (rho,z) = (" << showerStartingPosition.rho() << ", " << showerStartingPosition.z() << ")";

  if(theFillHisto) {
    em_incE->Fill(((preStepPoint->GetTotalEnergy())/GeV));
    em_ssp_rho->Fill(showerStartingPosition.rho());
    em_ssp_z->Fill(std::abs(showerStartingPosition.z()));
  }
#endif
  //  parameters for lateral distribution and fluctuation
  G4double z1=0.0251+0.00319*logEinc;
  G4double z2=0.1162-0.000381*tempZCalo;

  G4double k1=0.659 - 0.00309 * tempZCalo;
  G4double k2=0.645;
  G4double k3=-2.59;
  G4double k4=0.3585+ 0.0421*logEinc;

  G4double p1=2.623 -0.00094*tempZCalo;
  G4double p2=0.401 +0.00187*tempZCalo;
  G4double p3=1.313 -0.0686*logEinc;

  //   // @@@ dwjang, intial tuning by comparing 20-150GeV TB data
  //   // the width of energy response is not yet tuned.
  G4double e25Scale = 1.03551;
  z1 *= 9.76972e-01 - 3.85026e-01 * std::tanh(1.82790e+00*std::log(((preStepPoint->GetTotalEnergy())/GeV)) - 3.66237e+00);
  p1 *= 0.96;

  G4double stepLengthLeft = 10000;
  G4int    nSpots_sd = 0; // count total number of spots in SD
  G4double zInX0 = 0.0; // shower depth in X0 unit
  G4double deltaZInX0 = 0.0; // segment of depth in X0 unit
  G4double deltaZ = 0.0; // segment of depth in cm
  G4double stepLengthLeftInX0 = 0.0; // step length left in X0 unit

  const G4double divisionStepInX0 = 0.1; //step size in X0 unit
  G4double energy = ((preStepPoint->GetTotalEnergy())/GeV); // energy left in GeV

  Genfun::IncompleteGamma gammaDist;

  G4double energyInGamma = 0.0; // energy in a specific depth(z) according to Gamma distribution
  G4double preEnergyInGamma = 0.0; // energy calculated in a previous depth
  G4double sigmaInGamma  = 0.; // sigma of energy in a specific depth(z) according to Gamma distribution
  G4double preSigmaInGamma = 0.0; // sigma of energy in a previous depth

  //energy segment in Gamma distribution of shower in each step  
  G4double deltaEnergy =0.0 ; // energy in deltaZ
  G4int spotCounter = 0; // keep track of number of spots generated

  //step increment along the shower direction
  G4double deltaStep = 0.0;

  // Uniqueness of G4Step is important otherwise hits won't be created.
  G4double timeGlobal = track->GetStep()->GetPreStepPoint()->GetGlobalTime();

  // this needs to be deleted manually at the end of this loop.
  //  theGflashNavigator = new G4Navigator();
  theGflashNavigator->SetWorldVolume(G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume());

  //   // loop for longitudinal integration

#ifdef DebugLog  
  LogDebug("HFShower") << " Energy = " << energy << " Step Length Left = "  << stepLengthLeft;
#endif
  while(energy > 0.0 && stepLengthLeft > 0.0) { 
    stepLengthLeftInX0 = stepLengthLeft / Gflash::radLength[jCalorimeter];

    if ( stepLengthLeftInX0 < divisionStepInX0 ) {
      deltaZInX0 = stepLengthLeftInX0;
      deltaZ     = deltaZInX0 * Gflash::radLength[jCalorimeter];
      stepLengthLeft = 0.0;
    } else {
      deltaZInX0 = divisionStepInX0;
      deltaZ     = deltaZInX0 * Gflash::radLength[jCalorimeter];
      stepLengthLeft -= deltaZ;
    }

    zInX0 += deltaZInX0;
    
#ifdef DebugLog  
    LogDebug("HFShower") << " zInX0 = " << zInX0 << " spotBeta*zInX0 = " << spotBeta*zInX0;
#endif
    if ((!zInX0) || (!spotBeta*zInX0) || (zInX0 < 0.01) || 
        (spotBeta*zInX0 < 0.00001) || (!zInX0*beta) || (zInX0*beta < 0.00001)) 
      return hit;

    G4int nSpotsInStep = 0;

#ifdef DebugLog  
    LogDebug("HFShower") << " Energy - Energy Cut off = " << energy - energyCutoff;
#endif

    if ( energy > energyCutoff  ) {
      preEnergyInGamma  = energyInGamma;
      gammaDist.a().setValue(alpha);  //alpha
      
      energyInGamma = gammaDist(beta*zInX0); //beta
      G4double energyInDeltaZ  = energyInGamma - preEnergyInGamma;
      deltaEnergy   = std::min(energy,((preStepPoint->GetTotalEnergy())/GeV)*energyInDeltaZ);
 
      preSigmaInGamma  = sigmaInGamma;
      gammaDist.a().setValue(spotAlpha);  //alpha spot
      sigmaInGamma = gammaDist(spotBeta*zInX0); //beta spot
      nSpotsInStep = std::max(1,int(nSpots * (sigmaInGamma - preSigmaInGamma)));
    } else {
      deltaEnergy = energy;
      preSigmaInGamma  = sigmaInGamma;
      nSpotsInStep = std::max(1,int(nSpots * (1.0 - preSigmaInGamma)));
    }

    if ( deltaEnergy > energy || (energy-deltaEnergy) < energyCutoff ) deltaEnergy = energy;

    energy  -= deltaEnergy;

    if ( spotCounter+nSpotsInStep > maxNumberOfSpots ) {
      nSpotsInStep = maxNumberOfSpots - spotCounter;
      if (nSpotsInStep < 1) nSpotsInStep = 1;
    }


    //     // It begins with 0.5 of deltaZ and then icreases by 1 deltaZ
    deltaStep  += 0.5*deltaZ;
    pathLength += deltaStep;
    deltaStep   =  0.5*deltaZ;


    //lateral shape and fluctuations for  homogenous calo.
    G4double tScale = tmax *alpha/(alpha-1.0) * (std::exp(fluctuatedAlpha)-1.0)/std::exp(fluctuatedAlpha);
    G4double tau = std::min(10.0,(zInX0 - 0.5*deltaZInX0)/tScale);
    G4double rCore = z1 + z2 * tau; 
    G4double rTail = k1 *( std::exp(k3*(tau-k2)) + std::exp(k4*(tau-k2))); // @@ check RT3 sign
    G4double p23 = (p2 - tau)/p3;
    G4double probabilityWeight = p1 *  std::exp( p23 - std::exp(p23) );


    // Deposition of spots according to lateral distr.
    // Apply absolute energy scale
    // Convert into MeV unit
    G4double emSpotEnergy = deltaEnergy / nSpotsInStep * e25Scale * GeV;


#ifdef DebugLog  
    LogDebug("HFShower") << " nSpotsInStep = " << nSpotsInStep;
#endif



    for (G4int ispot = 0 ;  ispot < nSpotsInStep ; ispot++) {
      spotCounter++;
      G4double u1 = G4UniformRand();
      G4double u2 = G4UniformRand();
      G4double rInRM = 0.0;
      
      if (u1 < probabilityWeight) {
        rInRM = rCore * std::sqrt( u2/(1.0-u2) );
      } else {
        rInRM = rTail * std::sqrt( u2/(1.0-u2) );
      }
  
      G4double rShower =  rInRM * Gflash::rMoliere[jCalorimeter];
      
      //Uniform & random rotation of spot along the azimuthal angle
      G4double azimuthalAngle = twopi*G4UniformRand();
      
      //Compute global position of generated spots with taking into account magnetic field
      //Divide deltaZ into nSpotsInStep and give a spot a global position
      G4double incrementPath = (deltaZ/nSpotsInStep)*(ispot+0.5 - 0.5*nSpotsInStep);

      // trajectoryPoint give a spot an imaginary point along the shower development
      GflashTrajectoryPoint trajectoryPoint;
      theHelix->getGflashTrajectoryPoint(trajectoryPoint,pathLength+incrementPath);


      G4ThreeVector SpotPosition0 = trajectoryPoint.getPosition() + rShower*std::cos(azimuthalAngle)*trajectoryPoint.getOrthogonalUnitVector() + rShower*std::sin(azimuthalAngle)*trajectoryPoint.getCrossUnitVector();

      // Convert into mm unit
      SpotPosition0 *= cm;


      //---------------------------------------------------
      // fill a fake step to send it to hit maker
      //---------------------------------------------------

      // to make a different time for each fake step. (0.03 nsec is corresponding to 1cm step size)
      timeGlobal += 0.0001*nanosecond;

      //fill equivalent changes to a (fake) step associated with a spot 
      
      G4double zInX0_spot = std::abs(pathLength+incrementPath - pathLength0)/Gflash::radLength[jCalorimeter];

#ifdef DebugLog  
      LogDebug("HFShower") <<  "zInX0_spot,emSpotEnergy/GeV =" << zInX0_spot << " , " << emSpotEnergy/GeV <<  "emSpotEnergy/GeV =" << emSpotEnergy/GeV;
#endif

      if ((!zInX0_spot) || (zInX0_spot < 0)) continue;
      if ((!emSpotEnergy/GeV) ||  (emSpotEnergy < 0)) continue;
      if ((!rShower/Gflash::rMoliere[jCalorimeter]) || (rShower/Gflash::rMoliere[jCalorimeter] < 0)) continue;

      oneHit.depth    = 1;

#ifdef DebugLog
      if (theFillHisto) {
        em_long->Fill(SpotPosition0.z()/cm,emSpotEnergy/GeV);
        em_lateral->Fill(rShower/Gflash::rMoliere[jCalorimeter],emSpotEnergy/GeV);
        em_2d->Fill(SpotPosition0.z()/cm,rShower/Gflash::rMoliere[jCalorimeter],emSpotEnergy/GeV);
      }
#endif

      if(SpotPosition0 == 0) continue;

      double energyratio = emSpotEnergy/(preStepPoint->GetTotalEnergy()/(nSpots*e25Scale));

      if (emSpotEnergy/GeV < 0.0001) continue;
      if (energyratio > 80) continue;

      double zshift =0;
      if(SpotPosition0.z() > 0) zshift = 18;
      if(SpotPosition0.z() < 0) zshift = -18;


      G4ThreeVector gfshift(0,0,zshift*(pow(100,0.1)/pow(preStepPoint->GetTotalEnergy()/GeV,0.1)));

      G4ThreeVector SpotPosition = gfshift + SpotPosition0;

      double LengthWeight = std::fabs(std::pow(SpotPosition0.z()/11370,1));
      if (G4UniformRand()>  0.0021 * energyratio * LengthWeight) continue;

      oneHit.position = SpotPosition;
      oneHit.time     = timeGlobal;
      oneHit.edep     = emSpotEnergy/GeV;
      hit.push_back(oneHit);
      nSpots_sd++;
      
    } // end of for spot iteration

  } // end of while for longitudinal integration
#ifdef DebugLog
  if (theFillHisto) {
    em_nSpots_sd->Fill(nSpots_sd);
  }
#endif
  //  delete theGflashNavigator;
  return hit;
}

Member Data Documentation

TH2F* HFGflash::em_2d [private]

Definition at line 69 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH2F * HFGflash::em_2d_sd [private]

Definition at line 69 of file HFGflash.h.

Referenced by HFGflash().

TH1F* HFGflash::em_incE [private]

Definition at line 67 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH1F * HFGflash::em_lateral [private]

Definition at line 67 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH1F * HFGflash::em_lateral_sd [private]

Definition at line 68 of file HFGflash.h.

Referenced by HFGflash().

TH1F * HFGflash::em_long [private]

Definition at line 67 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH1F* HFGflash::em_long_sd [private]

Definition at line 68 of file HFGflash.h.

Referenced by HFGflash().

TH1F * HFGflash::em_nSpots_sd [private]

Definition at line 68 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH2F * HFGflash::em_ratio [private]

Definition at line 69 of file HFGflash.h.

Referenced by HFGflash().

TH2F * HFGflash::em_ratio_selected [private]

Definition at line 69 of file HFGflash.h.

Referenced by HFGflash().

TH1F * HFGflash::em_ssp_rho [private]

Definition at line 67 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH1F * HFGflash::em_ssp_z [private]

Definition at line 67 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

TH2F * HFGflash::em_ze [private]

Definition at line 69 of file HFGflash.h.

Referenced by HFGflash().

TH1F * HFGflash::em_ze_ratio [private]

Definition at line 68 of file HFGflash.h.

Referenced by HFGflash().

G4double HFGflash::energyScale[Gflash::kNumberCalorimeter] [private]

Definition at line 62 of file HFGflash.h.

G4double HFGflash::energyToDeposit [private]

Definition at line 61 of file HFGflash.h.

Definition at line 54 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

G4double HFGflash::lateralPar[4] [private]

Definition at line 65 of file HFGflash.h.

G4double HFGflash::longEcal[Gflash::NPar] [private]

Definition at line 64 of file HFGflash.h.

G4double HFGflash::longHcal[Gflash::NPar] [private]

Definition at line 63 of file HFGflash.h.

G4int HFGflash::showerType [private]

Definition at line 60 of file HFGflash.h.

G4double HFGflash::theBField [private]

Definition at line 58 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

bool HFGflash::theFillHisto [private]

Definition at line 57 of file HFGflash.h.

Referenced by gfParameterization(), and HFGflash().

G4Navigator* HFGflash::theGflashNavigator [private]

Definition at line 51 of file HFGflash.h.

Referenced by gfParameterization(), HFGflash(), and ~HFGflash().

G4Step* HFGflash::theGflashStep [private]

Definition at line 50 of file HFGflash.h.

Referenced by HFGflash(), and ~HFGflash().

G4TouchableHandle HFGflash::theGflashTouchableHandle [private]

Definition at line 52 of file HFGflash.h.

Referenced by HFGflash().

Definition at line 49 of file HFGflash.h.

Referenced by gfParameterization(), HFGflash(), and ~HFGflash().

bool HFGflash::theWatcherOn [private]

Definition at line 56 of file HFGflash.h.

Referenced by HFGflash().