6.9.2010 - Kamil Sedlak
1) bug found and corrected in the field-map extrapolation of the electric and magnetic fields for the spin-rotator (3DEOpera and 3D and symmetryType=1 or 2). The documentation was updated. 2) Some new variables added to the musrSimAna - the documentation has not been updated yet.
This commit is contained in:
@ -985,6 +985,18 @@ void musrAnalysis::FillHistograms(Int_t iiiEntry) {
|
||||
// Check whether there was good hit in the Positron counter
|
||||
// Long64_t dataBinMin = (mCounterHitExistsForThisEventID) ? timeBin0+dataWindowBinMin : timeBinOfThePreviouslyProcessedHit-100000000;
|
||||
// Long64_t dataBinMax = (mCounterHitExistsForThisEventID) ? timeBin0+dataWindowBinMax : timeBinOfThePreviouslyProcessedHit+100000000;
|
||||
detP_x = -1001.;
|
||||
detP_y = -1001.;
|
||||
detP_z = -1001.;
|
||||
detP_time_start = -1001.;
|
||||
detP_time_end = -1001.;
|
||||
detP_theta = -1001.;
|
||||
detP_phi = -1001.;
|
||||
detP_phi_MINUS_pos_Phi = -1001.;
|
||||
detP_phi_MINUS_pos_Phi360 = -1001.;
|
||||
detP_theta_MINUS_pos_Theta = -1001.;
|
||||
detP_theta_MINUS_pos_Theta360 = -1001.;
|
||||
detP_time_start_MINUS_muDecayTime = -1001.;
|
||||
pileup_eventID = -1001;
|
||||
pileup_muDecayDetID_double = -1001;
|
||||
pileup_muDecayPosX = -1000000000;
|
||||
@ -997,18 +1009,31 @@ void musrAnalysis::FillHistograms(Int_t iiiEntry) {
|
||||
Long64_t dataBinMax = timeBin0+dataWindowBinMax;
|
||||
pCounterHitExistsForThisEventID = PositronCounterHit(eventID,dataBinMin,dataBinMax,timeBin1,timeBin2,posEntry,idetP,idetP_ID,idetP_edep,doubleHitP);
|
||||
//cDEL if (pCounterHitExistsForThisEventID) std::cout<<" timeBin1-timeBin2 = "<<timeBin1<<"-"<<timeBin2<<"="<<timeBin1-timeBin2 <<std::endl;
|
||||
if (pCounterHitExistsForThisEventID && (kEntry>0)&&(posEntry>0)&&(kEntry!=posEntry)) {
|
||||
// This must be a pileup event (positron counter hit comes from the different event than the muon counter hit)
|
||||
//
|
||||
if (pCounterHitExistsForThisEventID&&(posEntry>0)) {
|
||||
// Get variables of the detector hit corresponding to the positron candidate:
|
||||
fChain->GetEntry(posEntry);
|
||||
pileup_eventID = eventID;
|
||||
pileup_muDecayDetID_double = muDecayDetID;
|
||||
pileup_muDecayPosX = muDecayPosX;
|
||||
pileup_muDecayPosY = muDecayPosY;
|
||||
pileup_muDecayPosZ = muDecayPosZ;
|
||||
pileup_muDecayPosR = sqrt(muDecayPosX*muDecayPosX+muDecayPosY*muDecayPosY);
|
||||
// if (pileup_muDecayDetID_double==-1000) {
|
||||
// std::cout<<"DEBUG: pileup_muDecayDetID_double==-1000, posEntry="<<posEntry<<", eventID="<<eventID<<", idetP_edep="<<idetP_edep<<", idetP="<<idetP<<", idetP_ID="<<idetP_ID<<std::endl;
|
||||
// }
|
||||
Double_t detP_edep = det_edep[idetP];
|
||||
if (detP_edep!=idetP_edep) {std::cout<<"KIKS: detP_edep="<<detP_edep<<"; idetP_edep="<<idetP_edep<<"; idetP= "<<idetP<<std::endl; exit(1);}
|
||||
detP_x = det_x[idetP];
|
||||
detP_y = det_y[idetP];
|
||||
detP_z = det_z[idetP];
|
||||
detP_time_start = det_time_start[idetP];
|
||||
detP_time_end = det_time_end[idetP];
|
||||
detP_phi = myAtan2(detP_y,detP_x) * 180./pi;
|
||||
detP_theta = myAtan2(sqrt(detP_y*detP_y+detP_x+detP_x),detP_z) * 180./pi;
|
||||
//
|
||||
if (pCounterHitExistsForThisEventID && (kEntry>0)&&(posEntry>0)&&(kEntry!=posEntry)) {
|
||||
// This must be a pileup event (positron counter hit comes from the different event than the muon counter hit)
|
||||
// fChain->GetEntry(posEntry);
|
||||
pileup_eventID = eventID;
|
||||
pileup_muDecayDetID_double = muDecayDetID;
|
||||
pileup_muDecayPosX = muDecayPosX;
|
||||
pileup_muDecayPosY = muDecayPosY;
|
||||
pileup_muDecayPosZ = muDecayPosZ;
|
||||
pileup_muDecayPosR = sqrt(muDecayPosX*muDecayPosX+muDecayPosY*muDecayPosY);
|
||||
// fChain->GetEntry(iiiEntry);
|
||||
}
|
||||
fChain->GetEntry(iiiEntry);
|
||||
}
|
||||
}
|
||||
@ -1024,12 +1049,22 @@ void musrAnalysis::FillHistograms(Int_t iiiEntry) {
|
||||
muTargetPol_Theta360 = (muTargetPol_Theta<0) ? muTargetPol_Theta+360. : muTargetPol_Theta;
|
||||
muTargetPol_Phi = myAtan2(muTargetPolY,muTargetPolX) * 180./pi;
|
||||
muTargetPol_Phi360= (muTargetPol_Phi<0) ? muTargetPol_Phi+360. : muTargetPol_Phi;
|
||||
muDecayPol_Theta = myAtan2(sqrt(muDecayPolX*muDecayPolX+muDecayPolY*muDecayPolY),muDecayPolZ) * 180./pi;
|
||||
muDecayPol_Theta360 = (muDecayPol_Theta<0) ? muDecayPol_Theta+360. : muDecayPol_Theta;
|
||||
muDecayPol_Phi = myAtan2(muDecayPolY,muDecayPolX) * 180./pi;
|
||||
muDecayPol_Phi360= (muDecayPol_Phi<0) ? muDecayPol_Phi+360. : muDecayPol_Phi;
|
||||
// Initial positron
|
||||
pos_Trans_Momentum = sqrt(posIniMomX*posIniMomX+posIniMomY*posIniMomY);
|
||||
pos_Momentum = sqrt(pos_Trans_Momentum*pos_Trans_Momentum+posIniMomZ*posIniMomZ);
|
||||
pos_Radius = pos_Trans_Momentum/(-BFieldAtDecay_Bz)/0.3;
|
||||
pos_Theta = myAtan2(pos_Trans_Momentum,posIniMomZ);
|
||||
pos_Phi = myAtan2(posIniMomY,posIniMomX);
|
||||
pos_Theta = myAtan2(pos_Trans_Momentum,posIniMomZ) * 180./pi;
|
||||
pos_Theta360 = (pos_Theta<0) ? pos_Theta+360. : pos_Theta;
|
||||
pos_Phi = myAtan2(posIniMomY,posIniMomX) * 180./pi;
|
||||
pos_Phi360 = (pos_Phi<0) ? pos_Phi+360. : pos_Phi;
|
||||
pos_Theta_MINUS_muDecayPol_Theta = deltaAngle(pos_Theta,muDecayPol_Theta);
|
||||
pos_Theta_MINUS_muDecayPol_Theta360 = (pos_Theta_MINUS_muDecayPol_Theta<0) ? pos_Theta_MINUS_muDecayPol_Theta+360 : pos_Theta_MINUS_muDecayPol_Theta;
|
||||
pos_Phi_MINUS_muDecayPol_Phi = deltaAngle(pos_Phi,muDecayPol_Phi);
|
||||
pos_Phi_MINUS_muDecayPol_Phi360 = (pos_Phi_MINUS_muDecayPol_Phi<0) ? pos_Phi_MINUS_muDecayPol_Phi+360 : pos_Phi_MINUS_muDecayPol_Phi;
|
||||
// Detector info
|
||||
det_m0edep = (mCounterHitExistsForThisEventID) ? idetM_edep : -1000.;
|
||||
// det_time0 = timeBin0*tdcresolution;
|
||||
@ -1040,6 +1075,13 @@ void musrAnalysis::FillHistograms(Int_t iiiEntry) {
|
||||
gen_time10 = muDecayTime-muM0Time;
|
||||
det_time10_MINUS_gen_time10 = (det_time10 - gen_time10)/picosecond;
|
||||
det_posEdep = (pCounterHitExistsForThisEventID) ? idetP_edep : -1000.;
|
||||
det_time1_MINUS_muDecayTime = (timeBin1*tdcresolution-muDecayTime)/picosecond;
|
||||
if ((detP_time_start>-998.)&&(muDecayTime>-998.)) detP_time_start_MINUS_muDecayTime = (detP_time_start - muDecayTime)/picosecond;
|
||||
detP_phi_MINUS_pos_Phi = deltaAngle(detP_phi,pos_Phi);
|
||||
// std::cout<<"detP_phi_MINUS_pos_Phi="<<detP_phi_MINUS_pos_Phi<<std::endl;
|
||||
detP_phi_MINUS_pos_Phi360 = (detP_phi_MINUS_pos_Phi<0) ? detP_phi_MINUS_pos_Phi+360 : detP_phi_MINUS_pos_Phi;
|
||||
detP_theta_MINUS_pos_Theta = deltaAngle(detP_theta,pos_Theta);
|
||||
detP_theta_MINUS_pos_Theta360 = (detP_theta_MINUS_pos_Theta<0) ? detP_theta_MINUS_pos_Theta+360 : detP_theta_MINUS_pos_Theta;
|
||||
// std::cout<<eventID<<" det_time10="<<det_time10<<" t1="<<timeBin1*tdcresolution<<" t0="<<timeBin0*tdcresolution<<" gen_time10="<<gen_time10<<std::endl;
|
||||
|
||||
// CALCULATE CONDITIONS
|
||||
@ -1347,3 +1389,15 @@ Double_t musrAnalysis::myAtan2(Double_t y, Double_t x) {
|
||||
if ( (x==0) && (y==0) ) return -1000.;
|
||||
return atan2(y,x);
|
||||
}
|
||||
//================================================================
|
||||
Double_t musrAnalysis::deltaAngle(Double_t alpha, Double_t beta) {
|
||||
// Calculates the difference between angle alpha and beta.
|
||||
// The angles alpha and beta are in degrees.
|
||||
// The difference will be in the range of (-180,180> degrees.
|
||||
if ((alpha<-998.)||(beta<-998.)) {return -1001.;} // one of the angles was undefined;
|
||||
Double_t delta = alpha - beta;
|
||||
if (delta<=-180) {delta+=360;}
|
||||
else {if (delta>180) delta-=360;}
|
||||
return delta;
|
||||
}
|
||||
//================================================================
|
||||
|
Reference in New Issue
Block a user