double akumulator (double (*fce)(double, double), double cisla[], int pocet) { double acc = cisla[0]; int i; for (i=1; i<pocet; i++){ acc= fce(acc, cisla[i]); } return acc; }
GaugeField Action_Nf2_ratio::md_force(){ #ifdef ANTIPERIODIC_BC BC->apply_bc(*u_); #endif Field eta = DdagD1_inv(D2_->mult_dag(phi_)); long double timing; FINE_TIMING_START(timing); GaugeField fce(D1_->md_force(eta,D1_->mult(eta))); fce -= GaugeField(D2_->md_force(eta,phi_)); FINE_TIMING_END(timing); _Message(TIMING_VERB_LEVEL, "[Timing] - Action_Nf2_ratio::md_force" << " - Force terms timing = " << timing << std::endl); #ifdef ANTIPERIODIC_BC BC->apply_bc(*u_); #endif FINE_TIMING_START(timing); if(smeared_) smart_conf_->smeared_force(fce); FINE_TIMING_END(timing); _Message(TIMING_VERB_LEVEL, "[Timing] - Action_Nf2_ratio::md_force" << " - Smeared force timing = " << timing << std::endl); FINE_TIMING_START(timing); GaugeField force = FieldUtils::TracelessAntihermite(fce); FINE_TIMING_END(timing); _Message(TIMING_VERB_LEVEL, "[Timing] - Action_Nf2_ratio::md_force" << " - TracelessAntihermite timing = " << timing << std::endl); _MonitorMsg(ACTION_VERB_LEVEL, Action,force, name_); return force; }
void LaserCalib(TTreeSRedirector & cstream, TTree * chain, Float_t tmin, Float_t tmax, Float_t fraction){ /// const Double_t kMaxDelta=10; AliTPCParamSR param; param.Update(); TFile fce("TPCsignal.root"); TTree * treece =(TTree*)fce.Get("Signalce"); if (chain) treece=chain; // TBranch * brsector = treece->GetBranch("Sector"); TBranch * brpad = treece->GetBranch("Pad"); TBranch * brrow = treece->GetBranch("Row"); TBranch * brTimeStamp = treece->GetBranch("TimeStamp"); // TBranch * brtime = treece->GetBranch("Time"); TBranch * brrms = treece->GetBranch("RMS06"); TBranch * brmax = treece->GetBranch("Max"); TBranch * brsum = treece->GetBranch("Qsum"); Int_t sector, pad, row=0; Double_t time=0, rms=0, qMax=0, qSum=0; UInt_t timeStamp=0; brsector->SetAddress(§or); brrow->SetAddress(&row); brpad->SetAddress(&pad); brTimeStamp->SetAddress(&timeStamp); brtime->SetAddress(&time); brrms->SetAddress(&rms); brmax->SetAddress(&qMax); brsum->SetAddress(&qSum); brsector->GetEntry(0); // Int_t firstSector = sector; Int_t lastSector = sector; Int_t fentry = 0; Int_t lentry = 0; // // find time offset for differnt events // Int_t count = 0; Double_t padTimes[500000]; TRobustEstimator restim; Double_t meanS[72], sigmaS[72]; Int_t firstS[72], lastS[72]; Double_t sectorsID[72]; for (Int_t isector=0;isector<72; isector++){ firstS[isector]=-1; lastS[isector] =-1; }; TH1F hisT("hisT","hisT",100,tmin,tmax); treece->Draw("Time>>hisT",""); Float_t cbin = hisT.GetBinCenter(hisT.GetMaximumBin()); for (Int_t ientry=0; ientry<treece->GetEntriesFast(); ientry++){ treece->GetEvent(ientry); // if (sector!=lastSector && sector==firstSector){ //if (sector!=lastSector){ lentry = ientry; TTimeStamp stamp(timeStamp); stamp.Print(); printf("\nEvent\t%d\tFirst\t%d\tLast\t%d\t%d\n",count, fentry, lentry, lentry-fentry); // // Int_t ngood=0; for (Int_t ientry2=fentry; ientry2<lentry; ientry2++){ // brtime->GetEvent(ientry2); // brsector->GetEvent(ientry2); treece->GetEvent(ientry2); if (time>tmin&&time<tmax && TMath::Abs(time-cbin)<kMaxDelta){ padTimes[ngood]=time; ngood++; if (firstS[sector]<0) firstS[sector]= ngood; if (firstS[sector]>=0) lastS[sector] = ngood; } } // // Double_t mean,sigma; restim.EvaluateUni(ngood,padTimes,mean, sigma,int(float(ngood)*fraction)); printf("Event\t%d\t%f\t%f\n",count, mean, sigma); for (Int_t isector=0; isector<72; isector++){ sectorsID[isector]=sector; if (firstS[isector]>=0 &&lastS[isector]>=0 && lastS[isector]>firstS[isector] ){ Int_t ngoodS = lastS[isector]-firstS[isector]; restim.EvaluateUni(ngoodS, &padTimes[firstS[isector]],meanS[isector], sigmaS[isector],int(float(ngoodS)*fraction)); } } TGraph graphM(72,sectorsID,meanS); TGraph graphS(72,sectorsID,sigmaS); cstream<<"TimeS"<< "CBin="<<cbin<< "Event="<<count<< "GM="<<&graphM<< "GS="<<&graphS<< "\n"; for (Int_t ientry2=fentry; ientry2<lentry-1; ientry2++){ treece->GetEvent(ientry2); Double_t x = param.GetPadRowRadii(sector,row); Int_t maxpad = AliTPCROC::Instance()->GetNPads(sector,row); Double_t y = (pad - 2.5 - 0.5*maxpad)*param.GetPadPitchWidth(sector); Double_t alpha = TMath::DegToRad()*(10.+20.*(sector%18)); Double_t gx = x*TMath::Cos(alpha)-y*TMath::Sin(alpha); Double_t gy = y*TMath::Cos(alpha)+x*TMath::Sin(alpha); Int_t npadS = lastS[sector]-firstS[sector]; cstream<<"Time"<< "Event="<<count<< "TimeStamp="<<timeStamp<< "CBin="<<cbin<< "x="<<x<< "y="<<y<< "gx="<<gx<< "gy="<<gy<< "Sector="<<sector<< "Row="<<row<< "Pad="<<pad<< "Time="<<time<< "RMS="<<rms<< "Time0="<<mean<< "Sigma0="<<sigma<< "TimeS0="<<meanS[sector]<< "SigmaS0="<<sigmaS[sector]<< "npad0="<<ngood<< "npadS="<<npadS<< "Max="<<qMax<< "Sum="<<qSum<< "\n"; } treece->GetEvent(ientry); fentry = ientry; count++; for (Int_t isector=0;isector<72; isector++){ firstS[isector]=-1; lastS[isector] =-1; } } lastSector=sector; } }