29.3.2011 Kamil Sedlak
1) Small change in optical photon simulation 2) Some other small changes, probably not very important
This commit is contained in:
@@ -455,6 +455,39 @@ void musrAnalysis::ReadInInputParameters(char* charV1190FileName) {
|
||||
nscan = sscanf(pch,"%d",&N1);
|
||||
} while (nscan==1);
|
||||
}
|
||||
else if (strcmp(tmpString0,"setSpecialAnticoincidenceTimeWindow")==0) {
|
||||
int channelNumber;
|
||||
double min, max;
|
||||
char unit[100]="Undefined";
|
||||
Long64_t lmin, lmax;
|
||||
sscanf(&line[0],"%*s %d %lf %lf %s",&channelNumber,&min,&max,unit);
|
||||
if ((strcmp(unit,"bin")==0)||(strcmp(unit,"bins")==0)) {lmin = Long64_t (min); lmax = Long64_t (max);}
|
||||
else if ((strcmp(unit,"ns") ==0)||(strcmp(unit,"nanosecond") ==0)) {
|
||||
lmin = Long64_t (min*nanosecond/tdcresolution);
|
||||
lmax = Long64_t (max*nanosecond/tdcresolution);
|
||||
}
|
||||
else if ((strcmp(unit,"mus") ==0)||(strcmp(unit,"microsecond") ==0)) {
|
||||
lmin = Long64_t (min*microsecond/tdcresolution);
|
||||
lmax = Long64_t (max*microsecond/tdcresolution);
|
||||
}
|
||||
|
||||
else {
|
||||
std::cout<<" ERROR! musrAnalysis: unknown unit in setSpecialAnticoincidenceTimeWindow !!! (unit="<<unit<<")"<<std::endl;
|
||||
std::cout<<" ==> S T O P "<<std::endl;
|
||||
exit(1);
|
||||
}
|
||||
std::cout<<" lmin="<<lmin<<" bins"<<std::endl;
|
||||
std::cout<<" lmax="<<lmax<<" bins"<<std::endl;
|
||||
|
||||
if (allCounterMap.find(channelNumber)==allCounterMap.end()) {
|
||||
std::cout<<" ERROR! musrAnalysis: unknown counter ("<<channelNumber<<") in setSpecialAnticoincidenceTimeWindow"<<std::endl;
|
||||
std::cout<<" ==> S T O P "<<std::endl;
|
||||
exit(1);
|
||||
}
|
||||
musrCounter* counter = (allCounterMap.find(channelNumber))->second;
|
||||
counter->SetAntiCoincidenceTimeWindowMin(lmin);
|
||||
counter->SetAntiCoincidenceTimeWindowMax(lmax);
|
||||
}
|
||||
else if (strcmp(tmpString0,"artificiallyChangeMuDecayTime")==0) {
|
||||
float min, max, mmmin, mmmax;
|
||||
sscanf(&line[0],"%*s %g %g %g %g %g %g %g",&min,&max,&mmmin,&mmmax);
|
||||
@@ -759,8 +792,11 @@ void musrAnalysis::SaveHistograms(char* runChar, char* v1190FileName) {
|
||||
}
|
||||
|
||||
Long64_t numberOfMuonCandidates = mCounter->GetNumberOfMuonCandidates();
|
||||
Long64_t numberOfMuonCandidatesAfterVK = mCounter->GetNumberOfMuonCandidatesAfterVK();
|
||||
Double_t durationOfExperiment = (numberOfRewinds*rewindTimeBins*tdcresolution+currentTime)/1000000;
|
||||
hInfo->Fill(5,(Double_t) numberOfMuonCandidates); // number of "triggers"
|
||||
|
||||
hInfo->Fill(4,(Double_t) numberOfMuonCandidatesAfterVK); // number of "triggers"
|
||||
hInfo->Fill(3,durationOfExperiment);
|
||||
//==============================
|
||||
// Write out the histograms
|
||||
std::cout<<"musrAnalysis::SaveHistograms()"<<std::endl;
|
||||
@@ -780,14 +816,18 @@ void musrAnalysis::SaveHistograms(char* runChar, char* v1190FileName) {
|
||||
|
||||
std::cout<<"==================================================================="<<std::endl;
|
||||
std::cout<<"Number of raw trigger counts (ignoring pileup gate, vetos and coincidences): "<<numberOfMuonCandidates<<std::endl;
|
||||
std::cout<<"Number of trigger counts (after vetos and coincidences but not pile-up rejected): "<<numberOfMuonCandidatesAfterVK<<std::endl;
|
||||
std::cout<<"Number of triggered events (i.e. only good \"muons\"): "<<numberOfGoodMuons<<std::endl;
|
||||
Double_t durationOfExperiment = (numberOfRewinds*rewindTimeBins*tdcresolution+currentTime)/1000000;
|
||||
std::cout<<"Duration of the \"experiment\": "<<durationOfExperiment<<" second"<<std::endl;
|
||||
// std::cout<<" (numberOfRewinds="<<numberOfRewinds<<")"<<std::endl;
|
||||
std::cout<<"In this run, MUONRATEFACTOR was set to "<<muonRateFactor<<", and the raw trigger rate was "
|
||||
<<numberOfMuonCandidates/durationOfExperiment<<" muons/second"<<std::endl;
|
||||
std::cout<<" To get event rate of 30000 events/second, set MUONRATEFACTOR to "
|
||||
<< muonRateFactor*( (numberOfMuonCandidates/durationOfExperiment)/30000 )<<std::endl;
|
||||
std::cout<<"MUONRATEFACTOR was set to "<<muonRateFactor<<std::endl;
|
||||
std::cout<<" Raw trigger rate = "<<numberOfMuonCandidates/durationOfExperiment<<" muons/second";
|
||||
std::cout<<" (to get 30000 events/second, set MUONRATEFACTOR = "
|
||||
<< muonRateFactor*( (numberOfMuonCandidates/durationOfExperiment)/30000 )<<")"<<std::endl;
|
||||
std::cout<<" Trigger rate after V & K = "<<numberOfMuonCandidatesAfterVK/durationOfExperiment<<" muons/second";
|
||||
std::cout<<" (to get 30000 events/second, set MUONRATEFACTOR = "
|
||||
<< muonRateFactor*( (numberOfMuonCandidatesAfterVK/durationOfExperiment)/30000 )<<")"<<std::endl;
|
||||
|
||||
std::cout<<"========================== E N D =================================="<<std::endl;
|
||||
}
|
||||
|
||||
@@ -985,7 +1025,7 @@ void musrAnalysis::FillHistograms(Int_t iiiEntry) {
|
||||
goodEvent_R_det = goodEvent_det && ( (find(R_posCounterList.begin(), R_posCounterList.end(), idetP_ID)) != R_posCounterList.end() );
|
||||
// std::cout<<"goodEvent_F_det="<<goodEvent_F_det<<std::endl;
|
||||
if (pileupEvent&&goodEvent_F_det) {
|
||||
std::cout<<" DEBUG: Pileup Event: eventID = "<<eventID<<" pileup_eventID = "<<pileup_eventID<<" det_time10 = "<<det_time10<<std::endl;
|
||||
// std::cout<<" DEBUG: Pileup Event: eventID = "<<eventID<<" pileup_eventID = "<<pileup_eventID<<" det_time10 = "<<det_time10<<std::endl;
|
||||
// debugEventMap.insert(std::pair<int,int>(eventID,10));
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ musrCounter::musrCounter(int CHANNEL_NR, char CHANNEL_NAME[200], char CHANNEL_TY
|
||||
strcpy(TDC_histoNameAdd,"Unset");
|
||||
doubleHitN=0;
|
||||
numberOfMuonCandidates=0;
|
||||
numberOfMuonCandidatesAfterVK=0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -182,6 +183,9 @@ Bool_t musrCounter::GetNextGoodMuon(Int_t evtID, Long64_t timeBinMin, Long64_t&
|
||||
for (counterMapType::const_iterator itCounter = vetoCounterMap.begin(); itCounter!=vetoCounterMap.end(); ++itCounter) {
|
||||
if ( (itCounter->second)->IsInCoincidence(timeBinOfCount_tmp,'M') ) goto endOfThisHit; // coincidence with veto found ==> skip hit
|
||||
}
|
||||
|
||||
numberOfMuonCandidatesAfterVK++;
|
||||
|
||||
// Check coincidences with other hits in the M counter
|
||||
// it is expected that there is only one M counter
|
||||
if (this->IsInCoincidence(timeBinOfCount_tmp,'M',true) ) { // coincidence with another M-counter hit ==> skip hit
|
||||
@@ -300,10 +304,13 @@ void musrCounter::SetCoincidenceTimeWindowOfAllCoincidenceDetectors(char motherC
|
||||
//================================================================
|
||||
void musrCounter::SetCoincidenceTimeWindowOfAllVetoDetectors(Long64_t maxCoinc, Long64_t min, Long64_t max) {
|
||||
for (counterMapType::const_iterator it = vetoCounterMap.begin(); it!=vetoCounterMap.end(); ++it) {
|
||||
Long64_t maxCoinc_AlreadySet = ((it->second)->GetMaxCoincidenceTimeWindow());
|
||||
if (maxCoinc < maxCoinc_AlreadySet) (it->second)->SetMaxCoincidenceTimeWindow(maxCoinc);
|
||||
|
||||
(it->second)->SetAntiCoincidenceTimeWindow(min,max);
|
||||
musrCounter* counter = it->second;
|
||||
Long64_t maxCoinc_AlreadySet = counter->GetMaxCoincidenceTimeWindow();
|
||||
Long64_t min_AlreadySet = counter->GetAntiCoincidenceTimeWindowMin();
|
||||
Long64_t max_AlreadySet = counter->GetAntiCoincidenceTimeWindowMax();
|
||||
if (maxCoinc < maxCoinc_AlreadySet) counter->SetMaxCoincidenceTimeWindow(maxCoinc);
|
||||
if (min < min_AlreadySet) counter->SetAntiCoincidenceTimeWindowMin(min);
|
||||
if (max > max_AlreadySet) counter->SetAntiCoincidenceTimeWindowMax(max);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,10 @@ class musrCounter {
|
||||
void SetCoincidenceTimeWindowOfAllVetoDetectors(Long64_t maxCoinc, Long64_t min, Long64_t max);
|
||||
void SetCoincidenceTimeWindow_M(Long64_t min, Long64_t max) {coincidenceTimeWindowMin_M=min; coincidenceTimeWindowMax_M=max;}
|
||||
void SetCoincidenceTimeWindow_P(Long64_t min, Long64_t max) {coincidenceTimeWindowMin_P=min; coincidenceTimeWindowMax_P=max;}
|
||||
void SetAntiCoincidenceTimeWindow(Long64_t min, Long64_t max) {antiCoincidenceTimeWindowMin=min; antiCoincidenceTimeWindowMax=max;}
|
||||
void SetAntiCoincidenceTimeWindowMin(Long64_t min) {antiCoincidenceTimeWindowMin=min;}
|
||||
void SetAntiCoincidenceTimeWindowMax(Long64_t max) {antiCoincidenceTimeWindowMax=max;}
|
||||
Long64_t GetAntiCoincidenceTimeWindowMin() {return antiCoincidenceTimeWindowMin;}
|
||||
Long64_t GetAntiCoincidenceTimeWindowMax() {return antiCoincidenceTimeWindowMax;}
|
||||
void SetTDChistogram(char hName[200],int t0,int t1,int t2,int hNr,char hNameAdd[200]);
|
||||
void FillTDChistogram(Double_t variable, Double_t vaha);
|
||||
void DrawTDChistogram();
|
||||
@@ -60,6 +63,7 @@ class musrCounter {
|
||||
Int_t GetNextGoodPositron(Int_t evtID, Long64_t timeBinMin, Long64_t timeBinMax, Long64_t& timeBinOfNextGoodHit, Long64_t& timeBinOfNextGoodHit_phaseShifted, Int_t& kEntry, Int_t& idet, Int_t& idetID, Double_t& idetEdep, Bool_t& doubleHitFound);
|
||||
void myPrintThisCounter(Int_t evtID, Int_t detail=2);
|
||||
Long64_t GetNumberOfMuonCandidates(){return numberOfMuonCandidates;}
|
||||
Long64_t GetNumberOfMuonCandidatesAfterVK(){return numberOfMuonCandidatesAfterVK;}
|
||||
|
||||
|
||||
private:
|
||||
@@ -86,6 +90,7 @@ class musrCounter {
|
||||
|
||||
Int_t doubleHitN;
|
||||
Long64_t numberOfMuonCandidates;
|
||||
Long64_t numberOfMuonCandidatesAfterVK;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user