Changeset 896 for trunk/MagicSoft/Mars
- Timestamp:
- 07/23/01 15:54:52 (23 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r895 r896 18 18 * macros/MagicHillas.C: 19 19 - changed to new stilish histogram fillers. 20 21 * mhist/MHMcRate.cc: 22 - some simplifications to the constructors 23 - some accelerations of the rate calculation 20 24 21 25 -
trunk/MagicSoft/Mars/mhist/MHMcRate.cc
r874 r896 28 28 #include "MLog.h" 29 29 30 ClassImp(MHMcRate) 30 ClassImp(MHMcRate); 31 32 void MHMcRate::Init(const char *name, const char *title) 33 { 34 *fName = name ? name : "MMcTriggerRate"; 35 *fTitle = title ? title : "Task to calc the collection area "; 36 37 fPartId=0; // Type of particle 38 39 fEnergyMax=0.0; // Maximum Energy in GeV 40 fEnergyMin=1000000.0; // Minimum Energy in GeV 41 42 fThetaMax=0.0; // Maximum theta angle of run 43 fThetaMin=370.0; // Minimum theta angle of run 44 fPhiMax=0.0; // Maximum phi angle of run 45 fPhiMin=370.0; // Minimum phi angle of run 46 47 fImpactMax=0.0; // Maximum impact parameter 48 fImpactMin=100000.0; // Minimum impact parameter 49 50 fBackTrig=-1.0; // Number of triggers from background 51 fBackSim=-1.0; // Number of simulated showers for the background 52 53 fTrigRate= -1.0; // Trigger rate in Hz 54 fTrigRateError= -1.0; // Estimated error for the trigger rate in Hz 55 } 31 56 32 57 // -------------------------------------------------------------------------- … … 35 60 // fills all member data with initial values 36 61 // 37 MHMcRate::MHMcRate (const char *name, const char *title) 38 { 39 *fName = name ? name : "MMcTriggerRate"; 40 *fTitle = title ? title : "Task to calc the collection area "; 41 42 fPartId=0; // Type of particle 43 44 fEnergyMax=0.0; // Maximum Energy in GeV 45 fEnergyMin=1000000.0; // Minimum Energy in GeV 46 47 fThetaMax=0.0; // Maximum theta angle of run 48 fThetaMin=370.0; // Minimum theta angle of run 49 fPhiMax=0.0; // Maximum phi angle of run 50 fPhiMin=370.0; // Minimum phi angle of run 51 52 fImpactMax=0.0; // Maximum impact parameter 53 fImpactMin=100000.0; // Minimum impact parameter 54 55 fBackTrig=-1.0; // Number of triggers from background 56 fBackSim=-1.0; // Number of simulated showers for the background 57 58 fSpecIndex=0.0; // dn/dE = k * e^{- fSpecIndex} 59 fFlux0=-1.0; // dn/dE = fFlux0 * E^{-a} 60 61 fShowRate= -1.0; // Showers rate in Hz 62 fShowRateError=0.0; // Estimated error of shower rate in Hz 63 64 fTrigRate= -1.0; // Trigger rate in Hz 65 fTrigRateError= -1.0; // Estimated error for the trigger rate in Hz 66 } 62 MHMcRate::MHMcRate(const char *name, const char *title) 63 { 64 Init(name, title); 65 66 fSpecIndex=0.0; // dn/dE = k * e^{- fSpecIndex} 67 fFlux0=-1.0; // dn/dE = fFlux0 * E^{-a} 68 69 fShowRate= -1.0; // Showers rate in Hz 70 fShowRateError=0.0; // Estimated error of shower rate in Hz 71 } 67 72 68 73 // -------------------------------------------------------------------------- … … 72 77 // incident showers to ShowRate 73 78 // 74 MHMcRate::MHMcRate (Float_t ShowRate, 75 const char *name, const char *title) 76 { 77 78 *fName = name ? name : "MMcTriggerRate"; 79 *fTitle = title ? title : "Task to calc the collection area "; 80 81 fPartId=0; // Type of particle 82 83 fEnergyMax=0.0; // Maximum Energy in GeV 84 fEnergyMin=1000000.0; // Minimum Energy in GeV 85 86 fThetaMax=0.0; // Maximum theta angle of run 87 fThetaMin=370.0; // Minimum theta angle of run 88 fPhiMax=0.0; // Maximum phi angle of run 89 fPhiMin=370.0; // Minimum phi angle of run 90 91 fImpactMax=0.0; // Maximum impact parameter 92 fImpactMin=100000.0; // Minimum impact parameter 93 94 fBackTrig=-1.0; // Number of triggers from background 95 fBackSim=-1.0; // Number of simulated showers for the background 96 97 fSpecIndex=0.0; // dn/dE = k * e^{- fSpecIndex} 98 fFlux0=-1.0; // dn/dE = fFlux0 * E^{-a} 99 100 fShowRate= ShowRate; // Showers rate in Hz 101 fShowRateError=sqrt(ShowRate); // Estimated error of shower rate in Hz 102 103 fTrigRate= -1.0; // Trigger rate in Hz 104 fTrigRateError= -1.0; // Estimated error for the trigger rate in Hz 105 } 79 MHMcRate::MHMcRate(Float_t showrate, 80 const char *name, const char *title) 81 { 82 Init(name, title); 83 84 fSpecIndex=0.0; // dn/dE = k * e^{- fSpecIndex} 85 fFlux0=-1.0; // dn/dE = fFlux0 * E^{-a} 86 87 fShowRate= showrate; // Showers rate in Hz 88 fShowRateError=sqrt(showrate); // Estimated error of shower rate in Hz 89 } 106 90 107 91 // -------------------------------------------------------------------------- … … 111 95 // spectral index and the initial flux to SpecIndex and Flux0 112 96 // 113 MHMcRate::MHMcRate (Float_t SpecIndex, Float_t Flux0, 114 const char *name, const char *title) 115 { 116 *fName = name ? name : "MMcTriggerRate"; 117 *fTitle = title ? title : "Task to calc the collection area "; 118 119 fPartId=0; // Type of particle 120 121 fEnergyMax=0.0; // Maximum Energy in GeV 122 fEnergyMin=1000000.0; // Minimum Energy in GeV 123 124 fThetaMax=0.0; // Maximum theta angle of run 125 fThetaMin=370.0; // Minimum theta angle of run 126 fPhiMax=0.0; // Maximum phi angle of run 127 fPhiMin=370.0; // Minimum phi angle of run 128 129 fImpactMax=0.0; // Maximum impact parameter 130 fImpactMin=100000.0; // Minimum impact parameter 131 132 fBackTrig=-1.0; // Number of triggers from background 133 fBackSim=-1.0; // Number of simulated showers for the background 134 135 fSpecIndex=SpecIndex; // dn/dE = k * e^{- fSpecIndex} 136 fFlux0=Flux0; // dn/dE = fFlux0 * E^{-a} 137 138 fShowRate= -1.0; 139 fShowRateError=0.0; 140 141 fTrigRate= -1.0; // Trigger rate in Hz 142 fTrigRateError= -1.0; // Estimated error for the trigger rate in Hz 143 } 144 145 // -------------------------------------------------------------------------- 146 // 147 // default constructor 148 // 149 MHMcRate::~MHMcRate() 150 { 151 } 97 MHMcRate::MHMcRate(Float_t specindex, Float_t flux0, 98 const char *name, const char *title) 99 { 100 Init(name, title); 101 102 fSpecIndex=specindex; // dn/dE = k * e^{- fSpecIndex} 103 fFlux0=flux0; // dn/dE = fFlux0 * E^{-a} 104 105 fShowRate= -1.0; 106 fShowRateError=0.0; 107 } 152 108 153 109 // -------------------------------------------------------------------------- … … 156 112 // 157 113 void MHMcRate:: SetParticle(UShort_t part) 158 { 159 fPartId=part;160 } 114 { 115 fPartId=part; 116 } 161 117 162 118 // -------------------------------------------------------------------------- … … 164 120 // Set the information about trigger due only to the background conditions 165 121 // 166 void MHMcRate::SetBackground (Float_t Showers, Float_t Triggers)167 { 168 fBackTrig=Showers; // Number of triggers from background169 fBackSim=Triggers; // Number of simulated showers for the background170 } 122 void MHMcRate::SetBackground (Float_t showers, Float_t triggers) 123 { 124 fBackTrig=showers; // Number of triggers from background 125 fBackSim=triggers; // Number of simulated showers for the background 126 } 171 127 172 128 // -------------------------------------------------------------------------- … … 174 130 // update the limits for energy, theta, phi and impact parameter 175 131 // 176 void MHMcRate::Boundaries(Float_t Energy, Float_t Theta,177 Float_t Phi, Float_t Impact)132 void MHMcRate::Boundaries(Float_t energy, Float_t theta, 133 Float_t phi, Float_t impact) 178 134 { 179 135 // It updates the limit values 180 136 181 if (fThetaMax<Theta) fThetaMax=Theta;182 if (fThetaMin>Theta) fThetaMin=Theta;183 184 if (fPhiMax<Phi) fPhiMax=Phi;185 if (fPhiMin>Phi) fPhiMin=Phi;186 187 if (fImpactMax<Impact) fImpactMax=Impact;188 if (fImpactMin>Impact) fImpactMin=Impact;189 190 if (fEnergyMax<Energy) fEnergyMax=Energy;191 if (fEnergyMin>Energy) fEnergyMin=Energy;137 if (fThetaMax<theta) fThetaMax=theta; 138 if (fThetaMin>theta) fThetaMin=theta; 139 140 if (fPhiMax<phi) fPhiMax=phi; 141 if (fPhiMin>phi) fPhiMin=phi; 142 143 if (fImpactMax<impact) fImpactMax=impact; 144 if (fImpactMin>impact) fImpactMin=impact; 145 146 if (fEnergyMax<energy) fEnergyMax=energy; 147 if (fEnergyMin>energy) fEnergyMin=energy; 192 148 193 149 } … … 199 155 void MHMcRate::CalcRate(Float_t trig, Float_t anal, Float_t simu) 200 156 { 201 // It computes the trigger rate202 203 // First one computes the rate of incident showers.204 fShowRate=fFlux0/(fSpecIndex-1)*205 (-pow(fEnergyMax,1-fSpecIndex)+pow(fEnergyMin,1-fSpecIndex)); 206 207 if (fPartId!=1)208 fShowRate=fShowRate*(fPhiMax-fPhiMin)* 209 (cos(fThetaMax)-cos(fThetaMin));210 211 fShowRate=fShowRate*PI_NUMBER*(fImpactMax/100.0*fImpactMax/100.0-212 fImpactMin/100.0*fImpactMin/100.0);213 214 fShowRateError=sqrt(fShowRate);215 216 // Then the trigger rate and its error is evaluated217 if(fBackTrig<0){ 218 f TrigRateError=sqrt((trig*fShowRate*fShowRate/(simu*simu))+219 ((1.0-anal*160.0e-9)* 220 (1.0-anal*160.0e-9)*1/ 221 (fBackSim*fBackSim*160.0e-9*fBackSim*160.0e-9))); 222 fBackTrig=0; 223 }224 else225 fTrigRateError=sqrt((trig*fShowRate*fShowRate/(simu*simu))+226 ((1.0-anal*160.0e-9)* 227 (1.0-anal*160.0e-9)*fBackTrig/ 228 (fBackSim*160.0e-9*fBackSim*160.0e-9))); 229 230 fTrigRate=trig*fShowRate/simu+231 (1.0-anal*160.0e-9)*fBackTrig/232 (fBackSim*160.0e-9); 233 234 } 157 // It computes the trigger rate 158 159 // First one computes the rate of incident showers. 160 const Double_t specidx = 1.0-fSpecIndex; 161 162 const Double_t epowmax = pow(fEnergyMax, specidx); 163 const Double_t epowmin = pow(fEnergyMin, specidx); 164 165 fShowRate = fFlux0/specidx*(epowmax-epowmin); 166 167 if (fPartId!=1) 168 fShowRate *= (fPhiMax-fPhiMin)*(cos(fThetaMax)-cos(fThetaMin)); 169 170 const Double_t impactdiff = fImpactMax-fImpactMin; 171 172 fShowRate *= TMath::Pi()*(impactdiff/100.0*impactdiff/100.0); 173 174 fShowRateError = sqrt(fShowRate); 175 176 const Double_t anal2 = 1.0-anal*160.0e-9; 177 const Double_t back2 = fBackSim*160.0e-9; 178 179 // Then the trigger rate and its error is evaluated 180 if(fBackTrig<0){ 181 fTrigRateError = sqrt((trig*fShowRate*fShowRate/(simu*simu)) + 182 (anal2*anal2*1/(fBackSim*back2*back2))); 183 fBackTrig=0; 184 } 185 else 186 fTrigRateError = sqrt((trig*fShowRate*fShowRate/(simu*simu)) + 187 (anal2*anal2*fBackTrig/(back2*back2))); 188 189 fTrigRate = trig*fShowRate/simu + anal2*fBackTrig/back2; 190 } 235 191 236 192 // -------------------------------------------------------------------------- … … 240 196 void MHMcRate::Print() 241 197 { 242 *fLog<<"Incident rate "<<fShowRate<<" Hz "<<endl; 243 *fLog<<endl<<"Trigger Rate "<<fTrigRate<<" +- "<<fTrigRateError<<" Hz"<<endl; 244 198 *fLog << "Incident rate " << fShowRate << " Hz " << endl; 199 *fLog << "Trigger Rate " << fTrigRate << " +- " << fTrigRateError << " Hz" << endl; 245 200 } 246 201 … … 251 206 void MHMcRate::Draw(Option_t* option) 252 207 { 253 *fLog <<"To be iplemented"<<endl;208 *fLog << "To be iplemented" << endl; 254 209 } -
trunk/MagicSoft/Mars/mhist/MHMcRate.h
r873 r896 39 39 Float_t fTrigRateError; // Estimated error for the trigger rate in Hz 40 40 41 void Init(const char *name, const char *title); 42 41 43 public: 42 44
Note:
See TracChangeset
for help on using the changeset viewer.