Ignore:
Timestamp:
10/26/04 20:21:05 (20 years ago)
Author:
moralejo
Message:
 Added fFadcTimeJitter to root output, in container MMcEvt. Added
 also fGainFluctuations boolean flag to MMcFadcHeader, to keep track of
 whether PMT gain fluctuations are simulated or not.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Simulation/Detector/Camera/camera.cxx

    r5318 r5320  
    2121//
    2222// $RCSfile: camera.cxx,v $
    23 // $Revision: 1.79 $
     23// $Revision: 1.80 $
    2424// $Author: moralejo $
    25 // $Date: 2004-10-26 14:02:32 $
     25// $Date: 2004-10-26 19:21:05 $
    2626//
    2727////////////////////////////////////////////////////////////////////////
     
    995995  }
    996996
     997  float *fadc_jitter = new float[ct_Number];
     998  for (int i=0; i<ct_Number;i++)
     999    fadc_jitter[i] = 0.;
     1000
    9971001  MFadc **Fadc_CT;
    9981002  Fadc_CT = new MFadc *[ct_Number];
     
    16861690                                      ((MGeomCam*)(camgeom.UncheckedAt(ict)))
    16871691                                      ->GetNumPixels());
     1692
     1693    //
     1694    // Fill also the flag indicating whether the PMT gain fluctuations
     1695    // were simulated or not:
     1696    //
     1697    HeaderFadc[ict]->SetGainFluctuations(Trigger_CT[ict]->GetGainFluctuations());
    16881698  }
    16891699
     
    19441954          inumphe_CT[ict]=0;
    19451955
     1956
     1957          // Obtain the FADC jitter of 1 FADC slice. This is a time to be added to the
     1958          // time of all photons in an event, before digitalization of the signal. It is
     1959          // therefore the same time shift for all pixels in a CT.
     1960
     1961          fadc_jitter[ict] =
     1962            (1./Fadc_CT[ict]->GetFadcSlicesPerNanosec()) * RandomNumber; //ns
     1963
    19461964          // read the photons and produce the photoelectrons
    1947          
     1965
    19481966          k = produce_phes( inputfile[ict],
    19491967                            ((MGeomCam*)(camgeom.UncheckedAt(ict))),
     
    19581976                            &arrtmax_ns, // will be changed by the function!
    19591977                            ict,
    1960                             mirror_frac[ict]);
     1978                            mirror_frac[ict],
     1979                            fadc_jitter[ict]);
    19611980
    19621981          inumphe=(inumphe<inumphe_CT[ict])?inumphe_CT[ict]:inumphe;
     
    23242343                                  -1.0,
    23252344                                  -1.0,
    2326                                   -1.0);
     2345                                  -1.0,
     2346                                  fadc_jitter[0]);
    23272347                }
    23282348                else{
     
    23632383                                 mcevth_2[0].get_ElecFraction(),
    23642384                                 mcevth_2[0].get_MuonFraction(),
    2365                                  mcevth_2[0].get_OtherFraction());
     2385                                 mcevth_2[0].get_OtherFraction(),
     2386                                 fadc_jitter[0]);
    23662387                }
    23672388              }
     
    25382559          } // end CT loop
    25392560
    2540           // If there is trigger in some telecope or we store all showers
     2561          // If there is trigger in some telescope or we store all showers
    25412562          if(btrigger){ 
    25422563            if (Write_McEvt){
     
    25812602                                  -1.0,
    25822603                                  -1.0,
    2583                                   -1.0);
     2604                                  -1.0,
     2605                                   fadc_jitter[ict]);
    25842606                }
    25852607                else{
     
    26182640                                  mcevth_2[ict].get_ElecFraction(),
    26192641                                  mcevth_2[ict].get_MuonFraction(),
    2620                                   mcevth_2[ict].get_OtherFraction());
     2642                                  mcevth_2[ict].get_OtherFraction(),
     2643                                  fadc_jitter[ict]);
    26212644                }
    26222645              }
     
    40044027                  float *tmax_ns,    // maximum arrival time of all phes
    40054028                  int ict,      // Telescope that is being analised to get the right QE.
    4006                   float mirror_fraction // Fraction of total mirror really present
     4029                  float mirror_fraction, // Fraction of total mirror really present
     4030                  float fadc_jitter     // Random shift (max 1 slice) of pulses in
     4031                                        // FADC, to simulate FADC clock noise.
    40074032                   ){
    40084033
     
    40344059
    40354060  float C1, C2, C3, rho;
    4036 
    4037   // A. Moralejo, October 2004
    4038   // Introduced the FADC jitter of 1 FADC slice. This is a time to be added to the
    4039   // time of all photons in an event, before digitalization of the signal. We use
    4040   // a positive value between 0 and 1 slice for technical reasons, but it is
    4041   // totally equivalent to having made  +- 1 FADC slice
    4042 
    4043   float fadc_jitter = (1./fadc->GetFadcSlicesPerNanosec()) * random.Uniform(0., 1.); //ns
    40444061
    40454062  //- - - - - - - - - - - - - - - - - - - - - - - - -
     
    44044421            fsetpos( infile, &fileposition);
    44054422
    4406             // produce photoelectrons
     4423            // produce photoelectrons (photons from starfield)
    44074424
    44084425            k = produce_phes( infile,
     
    44184435                              &tmax_ns,
    44194436                              0,
    4420                               mirror_fraction); // photons from starfield
     4437                              mirror_fraction,
     4438                              0.);
     4439
    44214440
    44224441            if( k != 0 ){ // non-zero returnvalue means error
     
    46534672
    46544673          McEvt[ict]->Fill( 0, 0, 0., -1.0, -1.0, -1.0, 0., 0., 0., 0., 0.,
    4655                             0., 0., 0., pulsetime[ict], 0., 0., 0., 0.,
     4674                            0., 0., 0., 0., 0., 0., 0., 0.,
    46564675                            0., 0., 0., 0., 0, 0, 0,
    46574676                            (UInt_t) ntotphot[ict],
    46584677                            (UInt_t) ntotphe[ict],
    46594678                            (UInt_t) nphe_from_nsb[ict]+ ntotphe[ict],
    4660                             0., 0., 0.);
     4679                            0., 0., 0., pulsetime[ict]);
    46614680
    46624681          //
     
    49104929//
    49114930// $Log: not supported by cvs2svn $
     4931// Revision 1.79  2004/10/26 14:02:32  moralejo
     4932//
     4933// Added option to switch off gain fluctuations (gain_fluctuations_off)
     4934//
    49124935// Revision 1.78  2004/10/21 17:44:07  moralejo
    49134936//
     
    50575080// - The screen output information has been improved to prevent some
    50585081// non-desired running conditions just looking at the output screen.
    5059 // - One MMcEvt for each Telscope is stored in the output file.
     5082// - One MMcEvt for each Telsecope is stored in the output file.
    50605083// - 500 empty events are simualted to get a more precise estimation of the
    50615084// pedestal Sigma for each pixel.
Note: See TracChangeset for help on using the changeset viewer.