Ignore:
Timestamp:
09/21/00 12:47:33 (24 years ago)
Author:
harald
Message:
Oscar found some smaller errors in the calculation of the pixel shape and
corrected it.
File:
1 edited

Legend:

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

    r408 r435  
    2121//
    2222// $RCSfile: camera.cxx,v $
    23 // $Revision: 1.10 $
    24 // $Author: MagicSol $
    25 // $Date: 2000-07-04 14:10:20 $
     23// $Revision: 1.11 $
     24// $Author: harald $
     25// $Date: 2000-09-21 11:47:33 $
    2626//
    2727////////////////////////////////////////////////////////////////////////
     
    6262#include "MMcEvt.h"
    6363#include "MMcTrig.hxx"
     64#include "MHeaderTrig.hxx"
    6465
    6566/*!@"
     
    437438
    438439  int ntrigger = 0;           //@< number of triggers in the whole file
     440  int btrigger = 0;           //@< trigger flag
    439441  int ithrescount;            //@< counter for loop over threshold trigger
    440442  int imulticount;            //@< counter for loop over multiplicity trigger
    441443  int itopocount;             //@< counter for loop over topology trigger
     444  int icontrigger;            //@< number of trigger conditions to be analised
     445  UShort_t numPix;            //@< number of sets of fadc written counts
     446
    442447  float fpixelthres[TRIGGER_PIXELS];
    443448
     
    533538  Trigger_Loop = get_Trigger_Loop(&Trigger_loop_lthres, &Trigger_loop_uthres, &Trigger_loop_lmult, &Trigger_loop_umult, &Trigger_loop_ltop, &Trigger_loop_utop);
    534539
     540  icontrigger =(Trigger_loop_uthres-Trigger_loop_lthres+1)*
     541    (Trigger_loop_umult-Trigger_loop_lmult+1)*
     542    (Trigger_loop_utop-Trigger_loop_ltop+1);
     543
    535544  if (!Trigger_Loop){
    536545    get_Trigger_Single (&Trigger_threshold, &Trigger_multiplicity, &Trigger_topology);
     546    icontrigger=1;
    537547  }
    538548
     
    675685  MTrigger  Trigger(Trigger_gate_length, Trigger_response_ampl, Trigger_response_fwhm);         //@< A instance of the Class MTrigger
    676686
    677   MMcTrig *McTrig   = new MMcTrig() ;
     687  //  Initialise McTrig information class if we want to save trigger informtion
     688
     689  MMcTrig **McTrig;
     690  MHeaderTrig **HeaderTrig;
     691
     692  if (Write_McTrig){
     693
     694    McTrig = new MMcTrig * [icontrigger];
     695 
     696    for (i=0;i<icontrigger;i++) {
     697      McTrig[i] = new MMcTrig();
     698    }
     699
     700    HeaderTrig = new MHeaderTrig * [icontrigger];
     701 
     702    for (i=0;i<icontrigger;i++) {
     703      HeaderTrig[i] = new MHeaderTrig();
     704    }
     705  }
    678706
    679707  MFadc fadc ;                //@< A instance of the Class MFadc
     
    682710  // Prepare the raw data output
    683711
    684   MRawEvt *Evt   = new MRawEvt() ;
     712  MRawEvt **Evt;
     713
     714  if (Write_RawEvt) {
     715    Evt = new MRawEvt * [icontrigger];
     716
     717    for (i=0;i<icontrigger;i++) {
     718      Evt[i] = new MRawEvt();
     719    }
     720  }
     721
    685722  MMcEvt  *McEvt = new MMcEvt ();
    686723
     
    691728  TFile outfile_temp ( rootname , "RECREATE" );
    692729
    693  
     730  Int_t bsize=128000; Int_t split=1;
     731
     732  //      create a Tree for the Header Event
     733  TTree HeaderTree("HeaderTree","Header of Run");
     734 
     735  //      define branches of Header Tree
     736
     737  char help[4]; 
     738
     739  if(!Trigger_Loop && Write_McTrig){
     740   
     741    HeaderTree.Branch("MHeaderTrig","MHeaderTrig",
     742                 &HeaderTrig[0], bsize, split);   
     743  }
     744  if (Trigger_Loop && Write_McTrig){
     745    for(char branchname[10],i=0;i<icontrigger;i++){
     746     
     747      sprintf(help,"%i",i+1);
     748      strcpy (branchname, "MHeaderTrig");
     749      strcat (branchname, & help[0]);
     750      strcat (branchname, ".");
     751      HeaderTree.Branch(branchname,"MHeaderTrig",
     752                     &HeaderTrig[i], bsize, split);
     753    }
     754  } 
     755
     756  //  Fill branches
     757 
     758  if(!Trigger_Loop && Write_McTrig){
     759
     760    HeaderTrig[0]->SetTopology((Short_t) Trigger_topology);
     761    HeaderTrig[0]->SetMultiplicity((Short_t) Trigger_multiplicity);
     762    for(i=0;i<TRIGGER_PIXELS;i++){
     763      fpixelthres[i]=(Float_t)Trigger_threshold;
     764    }
     765    HeaderTrig[0]->SetThreshold( fpixelthres);
     766
     767  }
     768  if(Trigger_Loop && Write_McTrig){
     769
     770    for (int iconcount=0,ithrescount=0;ithrescount<=Trigger_loop_uthres-Trigger_loop_lthres;ithrescount++){
     771      for (imulticount=0;imulticount<=Trigger_loop_umult-Trigger_loop_lmult;imulticount++){
     772        for(itopocount=0;itopocount<=Trigger_loop_utop-Trigger_loop_ltop;itopocount++){
     773          HeaderTrig[iconcount]->SetTopology((Short_t) itopocount+Trigger_loop_ltop);
     774          HeaderTrig[iconcount]->SetMultiplicity((Short_t) imulticount+Trigger_loop_lmult);
     775          for(i=0;i<TRIGGER_PIXELS;i++){
     776            fpixelthres[i]=(Float_t)(ithrescount+Trigger_loop_lthres);
     777          }
     778          HeaderTrig[iconcount]->SetThreshold( fpixelthres);
     779          iconcount++;
     780        }
     781      }   
     782    }
     783  }
     784
     785  //  Fill the Header Tree with the current leaves of each branch
     786  HeaderTree.Fill() ;
     787           
     788
    694789  //      create a Tree for the Event data stream
    695790  TTree EvtTree("EvtTree","Events of Run");
    696791
    697   Int_t bsize=128000; Int_t split=1;
     792  if (Write_McEvt){
     793
     794    EvtTree.Branch("MMcEvt","MMcEvt",
     795                   &McEvt, bsize, split); 
     796  }
    698797
    699798  if(!Trigger_Loop){
    700799   
    701     EvtTree.Branch("MRawEvt","MRawEvt",
    702                    &Evt, bsize, split);
    703   }
    704 
    705   EvtTree.Branch("MMcEvt","MMcEvt",
    706                  &McEvt, bsize, split);
    707  
    708   EvtTree.Branch("MMcTrig","MMcTrig",
    709                  &McTrig, bsize, split);
    710 
    711  
    712   //      create a Tree for the Event data stream
    713   TTree EvtTree_loop("EvtTree","Events of Run");
     800    if (Write_RawEvt){
     801      EvtTree.Branch("MRawEvt","MRawEvt",
     802                     &Evt[0], bsize, split);
     803    }
     804    if (Write_McTrig){
     805      EvtTree.Branch("MMcTrig","MMcTrig",
     806                     &McTrig[0], bsize, split);
     807    }   
     808  }
     809  else{
     810    if (Write_McTrig){
     811      for(char branchname[10],i=0;i<icontrigger;i++){
     812     
     813        sprintf(help,"%i",i+1);
     814        strcpy (branchname, "MMcTrig");
     815        strcat (branchname, & help[0]);
     816        strcat (branchname, ".");
     817        EvtTree.Branch(branchname,"MMcTrig",
     818                       &McTrig[i], bsize, split);
     819      }
     820    }
     821  } 
    714822
    715823  if (Trigger_Loop && Write_RawEvt){
    716    
    717     EvtTree_loop.Branch("MRawEvt","MRawEvt",
    718                         &Evt, bsize, split);
    719    
    720     EvtTree_loop.Branch("MMcEvt","MMcEvt",
    721                         &McEvt, bsize, split);
    722    
    723     EvtTree_loop.Branch("MMcTrig","MMcTrig",
    724                         &McTrig, bsize, split);
    725    
     824    for(char branchname[10],i=0;i<icontrigger;i++){
     825     
     826      sprintf(help,"%i",i+1);
     827      strcpy (branchname, "MRawEvt");
     828      strcat (branchname, & help[0]);
     829      strcat (branchname, ".");
     830      EvtTree.Branch(branchname,"MRawEvt",
     831                     &Evt[i], bsize, split);
     832    }
    726833  }
    727834
     
    853960    if(!isA( flag, FLAG_START_OF_RUN )){
    854961
    855       //We write some trigger information in data file before exit
    856 
    857       datafile<<ntshow<<" event(s), with a total of "<<ntcph<<" C.photons"<<endl;
    858       if (Trigger_Loop){
    859         datafile<<"Fraction of triggers: "<<endl;
    860         for (ithrescount=Trigger_loop_lthres;ithrescount<=Trigger_loop_uthres;ithrescount++){
    861           for (imulticount=Trigger_loop_lmult;imulticount<=Trigger_loop_umult;imulticount++){
    862             for(itopocount=Trigger_loop_ltop;itopocount<=Trigger_loop_utop;itopocount++){
    863               datafile<<"Thres "<<ithrescount<<", Multi "<<imulticount<<", Topo"<<itopocount<<": ";
    864               datafile<<((float)ntriggerloop[ithrescount-Trigger_loop_lthres][imulticount-Trigger_loop_lmult][itopocount-Trigger_loop_ltop] / ((float)ntshow) * 100.0)<<"% ("<<ntriggerloop[ithrescount-Trigger_loop_lthres][imulticount-Trigger_loop_lmult][itopocount-Trigger_loop_ltop]<<" out of "<<ntshow<<")"<<endl;
    865             }
    866           }   
    867         }
    868       }
    869       else{
    870         datafile<<"Fraction of triggers: "<<((float)ntrigger) / ((float)ntshow) * 100.0<<" ("<<ntrigger<<" out of "<<ntshow<<" )"<<endl;
    871       }
    872962      //  We exit
    873       error( SIGNATURE, "Expected start of run flag, but found: %s\n", flag );
     963      //error( SIGNATURE, "Expected start of run flag, but found: %s\n", flag );
     964      //  We break the main loop
     965      cout<<"Warning: Expected start of run flag, but found:"<<flag<<endl;
     966      cout<<"         We break the main loop"<<endl;
     967      break;     
    874968    }
    875969    else { // found start of run
     
    10641158       
    10651159        cout << "Total number of phes: " << inumphe <<endl;
     1160       
    10661161
    10671162        //++++++++++++++++++++++++++++++++++++++++++++++++++
     
    10841179        //   
    10851180        Trigger.ElecNoise() ;
     1181       
    10861182        fadc.ElecNoise() ;
    1087        
     1183
    10881184        //   We study several trigger conditons
    10891185        if(Trigger_Loop){
    10901186          //  Loop over trigger threshold
    1091           for (ithrescount=Trigger_loop_lthres;ithrescount<=Trigger_loop_uthres;ithrescount++){
     1187          for (int iconcount=0,ithrescount=Trigger_loop_lthres;ithrescount<=Trigger_loop_uthres;ithrescount++){
    10921188            for (i=0;i<TRIGGER_PIXELS;i++)
    10931189              fpixelthres[i]=(float) ithrescount;
     
    11031199            //   CHANNEL_THRESHOLD.
    11041200            //
     1201           
     1202            //  Set trigger flags to zero
     1203            Lev1=Lev2=0;
     1204            btrigger=0;
    11051205
    11061206            //  loop over multiplicity of trigger configuration
     
    11101210
    11111211              Lev0=(Short_t) Trigger.ZeroLevel();
    1112               if (Lev0>0 || Write_All_Images){
    1113                 Lev1=Lev2=0;
    1114 
     1212              if (Lev0>0 || Write_All_Images || btrigger){
     1213               
    11151214                //  loop over topologies
    11161215                for(itopocount=Trigger_loop_ltop;itopocount<=Trigger_loop_utop;itopocount++){
     1216                  Lev1=Lev2=0;
     1217               
    11171218                  if(itopocount==0 && imulticount>7) continue;
    11181219                  if(itopocount==2 && imulticount<3) continue;
    11191220                  Trigger.SetTopology(itopocount);
    11201221                  Trigger.ClearFirst();
    1121 
     1222                 
    11221223                  //
    11231224                  //   Start the First Level Trigger simulation
    11241225                  //
    1125                   McTrig->SetFirstLevel (Lev1=Trigger.FirstLevel());
     1226                  Lev1=Trigger.FirstLevel();
     1227                  if (Write_McTrig)
     1228                    McTrig[iconcount]->SetFirstLevel (Lev1);
    11261229                  if(Lev1>0) {
     1230                    btrigger= 1;
    11271231                    ntriggerloop[ithrescount-Trigger_loop_lthres][imulticount-Trigger_loop_lmult][itopocount-Trigger_loop_ltop]++;
    1128                     McTrig->SetTopology(itopocount);
    1129                     McTrig->SetMultiplicity(imulticount);
    1130                     McTrig->SetThreshold(fpixelthres);           
    11311232                  }
    1132                   if(Lev1==0 && Write_All_Images){
    1133                     McTrig->SetTopology(itopocount);
    1134                     McTrig->SetMultiplicity(imulticount);
    1135                     McTrig->SetThreshold(fpixelthres);
     1233                 
     1234                  if(Lev1==0 && (Write_All_Images || btrigger)){
     1235                    btrigger= 1;
    11361236                    Lev1=1;
    11371237                  }
     1238                  numPix=0;
    11381239                  for (Int_t ii=0;ii<Lev1;ii++){
    1139                     McTrig->SetTime(Trigger.GetFirstLevelTime(ii));
    1140                     McTrig->SetPixel(Trigger.GetFirstLevelPixel(ii));
     1240                    if (Write_McTrig)
     1241                      McTrig[iconcount]->SetTime(Trigger.GetFirstLevelTime(ii),ii+1);
     1242                    if (Write_McTrig)
     1243                      McTrig[iconcount]->SetPixel(Trigger.GetFirstLevelPixel(ii),ii+1);
     1244                   
     1245                    //
     1246                    //  fill inside the class fadc the member output
     1247                    //
     1248
    11411249                    fadc.TriggeredFadc(Trigger.GetFirstLevelTime(ii));
    1142 
    1143                     //   fill pixel information
    1144                    
    1145                     for(i=0;i<iMAXNUMPIX;i++){
    1146                       for (j=0;j<SLICES_MFADC;j++){
    1147                         fadcValues[j]=fadc.GetFadcSignal(i,j);
    1148                       }
    1149                     }
    1150 
     1250           
    11511251                    if( Write_RawEvt ){
    11521252                      //
     
    11541254                      //
    11551255                     
    1156                       Evt->FillHeader ( (UShort_t) (ntshow + nshow) ,  20 ) ;
    1157                      
     1256                      Evt[iconcount]->FillHeader ( (UInt_t) (ntshow + nshow),(Float_t) (nshow*10000+iconcount*100+ii),0 );
    11581257                      //   fill pixel information
    1159                      
    1160                       Evt->FillPixel(i,fadcValues);
    1161                    
    1162                       //
    1163                       //   fill the MMcEvt with all information 
    1164                       //
    1165                    
    1166                       McEvt->Fill( (UShort_t) mcevth.get_primary() ,
    1167                                    mcevth.get_energy(),
    1168                                    mcevth.get_theta(),
    1169                                    mcevth.get_phi(),
    1170                                    mcevth.get_core(),
    1171                                    mcevth.get_coreX(),
    1172                                    mcevth.get_coreY(),
    1173                                    impactD,
    1174                                    ulli, ulli,
    1175                                    (UShort_t) ncph,
    1176                                    ulli,
    1177                                    (UShort_t) ncph) ;
    1178                       //   We don not count phtons out of the camera.   
    1179                      
    1180                       //
    1181                       //    write it out to the file outfile
    1182                       //
    1183                    
    1184                       EvtTree_loop.Fill() ;
    1185 
    1186                       //    clear all
    1187                       Evt->Clear() ;
    1188                       McEvt->Clear() ; 
     1258                      for(i=0;i<ct_NPixels;i++){
     1259                        for (j=0;j<SLICES_MFADC;j++){
     1260                          fadcValues[j]=fadc.GetFadcSignal(i,j);
     1261                        }
     1262                        Evt[iconcount]->FillPixel(i+1000*ii,&numPix,fadcValues);
     1263                      }
    11891264                    }
    11901265                  }
    11911266                  //
    1192                   //   fill the MMcEvt with all information 
     1267                  // Increase counter of analised trigger conditions
    11931268                  //
    1194                  
    1195                   McEvt->Fill( (UShort_t) mcevth.get_primary() ,
    1196                                mcevth.get_energy(),
    1197                                mcevth.get_theta(),
    1198                                mcevth.get_phi(),
    1199                                mcevth.get_core(),
    1200                                mcevth.get_coreX(),
    1201                                mcevth.get_coreY(),
    1202                                impactD,
    1203                                ulli, ulli,
    1204                                (UShort_t) ncph,
    1205                                ulli,
    1206                                (UShort_t) ncph) ;
    1207 
    1208                   EvtTree.Fill() ;
    1209        
    1210                   McTrig->Clear() ;
     1269                  iconcount++;
    12111270                }
    12121271              }
    1213               else break;
     1272              else{
     1273                break;
     1274              }
    12141275            }
     1276            if (!btrigger) break;
     1277          }
     1278          if (btrigger){
     1279
     1280            //
     1281            //   fill the MMcEvt with all information 
     1282            //
     1283
     1284            if (Write_McEvt) {
     1285              McEvt->Fill( (UShort_t) mcevth.get_primary() ,
     1286                           mcevth.get_energy(),
     1287                           mcevth.get_theta(),
     1288                           mcevth.get_phi(),
     1289                           mcevth.get_core(),
     1290                           mcevth.get_coreX(),
     1291                           mcevth.get_coreY(),
     1292                           impactD,
     1293                           ulli, ulli,
     1294                           (UShort_t) ncph,
     1295                           ulli,
     1296                           (UShort_t) ncph) ;
     1297            }
     1298            //  Fill the Tree with the current leaves of each branch
     1299            i=EvtTree.Fill() ;
     1300   
     1301            //  Clear the branches
     1302            if(Write_McTrig){
     1303              for(i=0;i<icontrigger;i++){
     1304                McTrig[i]->Clear() ;
     1305              }
     1306            }
     1307            if( Write_RawEvt ){
     1308              for(i=0;i<icontrigger;i++){
     1309                Evt[i]->Clear() ;
     1310              }
     1311            }
     1312            if (Write_McEvt)
     1313              McEvt->Clear() ; 
    12151314          }
    12161315        }
     
    12451344         
    12461345          if ( Lev0 > 0 || Write_All_Images) {
    1247             McTrig->SetFirstLevel (Lev1= Trigger.FirstLevel());
     1346            Lev1= Trigger.FirstLevel();
     1347            if (Write_McTrig)
     1348              McTrig[0]->SetFirstLevel (Lev1);
    12481349          }
    12491350          if (Lev1>0){
     
    12531354            Lev1=1;
    12541355          }
    1255           McTrig->SetTopology(Trigger.GetTopology());
    1256           McTrig->SetMultiplicity(Trigger.GetMultiplicity());
    1257           for(i=0;i<TRIGGER_PIXELS;i++){
    1258             fpixelthres[i]=Trigger.GetThreshold(i);
    1259           }
    1260           McTrig->SetThreshold(fpixelthres);
    1261 
     1356
     1357          numPix=0;
    12621358          for(Int_t ii=0;ii<Lev1;ii++){
    12631359            //  Loop over different level one triggers
     1360
     1361            //
     1362            //   fill inside class fadc the member output
     1363            //
    12641364            fadc.TriggeredFadc(Trigger.GetFirstLevelTime(ii));
    1265             McTrig->SetTime(Trigger.GetFirstLevelTime(ii));
    1266             McTrig->SetPixel(Trigger.GetFirstLevelPixel(ii));
    1267            
    1268             //
    1269             //  Fill the header of this event
    1270             //
    1271            
    1272             Evt->FillHeader ( (UShort_t) (ntshow + nshow) ,  20 ) ;
    1273            
    1274             //   fill pixel information
    1275            
    1276             for(i=0;i<iMAXNUMPIX;i++){
    1277               for (j=0;j<SLICES_MFADC;j++){
    1278                 fadcValues[j]=fadc.GetFadcSignal(i,j);
     1365
     1366            if (Write_McTrig)
     1367              McTrig[0]->SetTime(Trigger.GetFirstLevelTime(ii),ii+1);
     1368
     1369            if (Write_McTrig)
     1370              McTrig[0]->SetPixel(Trigger.GetFirstLevelPixel(ii),ii+1);
     1371
     1372            //  Fill Evt information
     1373
     1374            if (Write_RawEvt){
     1375
     1376              //
     1377              //  Fill the header of this event
     1378              //
     1379             
     1380              Evt[0]->FillHeader ( (UShort_t) (ntshow + nshow) ,  20 ) ;
     1381             
     1382              //   fill pixel information
     1383             
     1384              for(i=0;i<ct_NPixels;i++){
     1385                for (j=0;j<SLICES_MFADC;j++){
     1386                  fadcValues[j]=fadc.GetFadcSignal(i,j);
     1387                }
     1388                Evt[0]->FillPixel(i,&numPix,fadcValues);
    12791389              }
    1280               Evt->FillPixel(i,fadcValues);
    1281             }
    1282            
     1390            }       
    12831391            //
    12841392            //   fill the MMcEvt with all information 
    12851393            //
    12861394           
    1287             McEvt->Fill( (UShort_t) mcevth.get_primary() ,
    1288                          mcevth.get_energy(),
    1289                          mcevth.get_theta(),
    1290                          mcevth.get_phi(),
    1291                          mcevth.get_core(),
    1292                          mcevth.get_coreX(),
    1293                          mcevth.get_coreY(),
    1294                          impactD,
    1295                          ulli, ulli,
    1296                          (UShort_t) ncph,
    1297                          ulli,
    1298                          (UShort_t) ncph) ;
    1299            
     1395            if (Write_McEvt){
     1396              McEvt->Fill( (UShort_t) mcevth.get_primary() ,
     1397                           mcevth.get_energy(),
     1398                           mcevth.get_theta(),
     1399                           mcevth.get_phi(),
     1400                           mcevth.get_core(),
     1401                           mcevth.get_coreX(),
     1402                           mcevth.get_coreY(),
     1403                           impactD,
     1404                           ulli, ulli,
     1405                           (UShort_t) ncph,
     1406                           ulli,
     1407                           (UShort_t) ncph) ;
     1408            }
    13001409            //   We don not count photons out of the camera.   
    13011410           
     
    13271436           
    13281437            //    clear all
    1329             Evt->Clear() ;
    1330             McEvt->Clear() ;
     1438            if (Write_RawEvt) Evt[0]->Clear() ;
     1439            if (Write_McEvt) McEvt->Clear() ;
    13311440          }
    1332           McTrig->Clear() ;
     1441          if (Write_McTrig) McTrig[0]->Clear() ;
    13331442        }
    13341443               
     
    13831492          log(SIGNATURE, "End of file . . .\n");
    13841493          still_in_loop  = FALSE;
    1385          
     1494 
    13861495          if ((! Data_From_STDIN) && ( !feof(inputfile) )){
    13871496           
     
    13941503           
    13951504          }
     1505         
     1506          fread( flag, SIZE_OF_FLAGS, 1, inputfile );
    13961507
    13971508        } // end if found end of file
    13981509      } // end if found end of run
    1399 
    1400       fread( flag, SIZE_OF_FLAGS, 1, inputfile );
    14011510
    14021511    } // end if else found start of run
     
    14071516  //--
    14081517
     1518  HeaderTree.Write() ;
    14091519  EvtTree.Write() ;
    14101520  outfile_temp.Write() ;
     
    14161526 
    14171527  TFile outfile ( rootname , "RECREATE" );
     1528  HeaderTree.Write() ;
    14181529  EvtTree.Write() ;
    14191530  outfile.Write() ;
    14201531  outfile.Close() ;
    14211532
    1422   if(Trigger_Loop && Write_RawEvt){
    1423     //++
    1424     // put the Event to the special root file
    1425     //--
    1426     TFile outfile_loop( rootname_loop , "RECREATE" );
    1427     EvtTree_loop.Write() ;
    1428     outfile_loop.Write() ;
    1429 
    1430     outfile_loop.Close() ;
    1431   }
    14321533  // close input file
    14331534 
     
    23522453  b = pcam->dpixdiameter_cm / 2. * pcam->dpixsizefactor[ipixnum];
    23532454  a = pcam->dpixdiameter_cm / sqrt(3.) * pcam->dpixsizefactor[ipixnum];
    2354   c = 1. - 1./sqrt(3.);
     2455  c = 1./sqrt(3.);
     2456
    23552457  if((ipixnum < 0)||(ipixnum >= pcam->inumpixels)){
    23562458    fprintf(stderr, "Error in bpoint_is_in_pix: invalid pixel number %d\n", ipixnum);
     
    25432645    cx = photon.get_x();
    25442646    cy = photon.get_y();
    2545          
     2647 
    25462648    // get wavelength
    25472649         
     
    25732675      }
    25742676    }
    2575            
     2677
    25762678    if(ipixnum==-1){// the photon is in none of the pixels
    25772679
     
    25852687      continue;
    25862688    }
    2587                  
     2689
     2690    if(ipixnum==0) {// the phton is in the central pixel, which is not used for trigger
     2691      // read next CPhoton
     2692
     2693      fread ( flag, SIZE_OF_FLAGS, 1, sp );
     2694     
     2695      // go to beginning of loop, the photon is lost
     2696      continue;
     2697    }
    25882698    //+++
    25892699    // QE simulation
     
    25962706    // check if wl is inside table; outside the table, QE is assumed to be zero
    25972707
     2708   
    25982709    if((wl < qept[0][0]) || (wl > qept[0][pointsQE-1])){
    25992710
     
    26192730
    26202731    qe = lin_interpol(qept[0][k-1], qept[1][k-1], qept[0][k], qept[1][k], wl) / 100.0;
    2621    
     2732
    26222733    // if random > quantum efficiency, reject it
    2623                
    2624     if ( RandomNumber > qe ) {
     2734
     2735    if ( (RandomNumber) > qe ) {
    26252736
    26262737      // cout << " lost\n";
    2627            
     2738
    26282739      // read next Photon
    26292740
     
    29553066//
    29563067// $Log: not supported by cvs2svn $
     3068// Revision 1.10  2000/07/04 14:10:20  MagicSol
     3069// Some changes have been done in the root output file. The RawEvt tree is only
     3070// stored in the single trigger mode.
     3071// The trigger input parameters are also given by the general input card.
     3072// The diffuse NSB and the star NSB have been decoupled. Now the contribution of
     3073// each one can be studied seperately.
     3074//
    29573075// Revision 1.9  2000/06/13 13:25:24  blanch
    29583076// The multiple arrays have been replaced, since they do not work
Note: See TracChangeset for help on using the changeset viewer.