void makeControlPlots::Loop() { // In a ROOT session, you can do: // Root > .L makeControlPlots.C // Root > makeControlPlots t // Root > t.GetEntry(12); // Fill t data members with entry number 12 // Root > t.Show(); // Show values of entry 12 // Root > t.Show(16); // Read and show values of entry 16 // Root > t.Loop(); // Loop on all entries // // This is the loop skeleton where: // jentry is the global entry number in the chain // ientry is the entry number in the current Tree // Note that the argument to GetEntry must be: // jentry for TChain::GetEntry // ientry for TTree::GetEntry and TBranch::GetEntry // // To read only selected branches, Insert statements like: // METAHOD1: // fChain->SetBranchStatus("*",0); // disable all branches // fChain->SetBranchStatus("branchname",1); // activate branchname // METHOD2: replace line // fChain->GetEntry(jentry); //read all branches //by b_branchname->GetEntry(ientry); //read only this branch if (!intervals) return; if (fChain == 0) return; Long64_t nentries = fChain->GetEntries(); std::vector<variablesToControl> controls; int kIntervals=intervals->numberOfIntervals(); controls.reserve(kIntervals); cout<<"creating variables"<<endl; for(int iinterval=0;iinterval<kIntervals;iinterval++){ controls[iinterval].reset(); } Long64_t nbytes = 0, nb = 0; for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; nb = fChain->GetEntry(jentry); nbytes += nb; // if (Cut(ientry) < 0) continue; controls[time_interval-1].counter++; int tt=iTT(ieta,iphi,sign); int xtal=iXtal(ieta,iphi,sign); RMSet=RMSet*errEtCorr_factor; RMSetNoCorr=RMSetNoCorr*errEtCorr_factor; //Histories by eta ring controls[time_interval-1].nhitMean[ieta-1][sign]+=nHits; controls[time_interval-1].etSumMean[ieta-1][sign]+=et; controls[time_interval-1].etMean[ieta-1][sign]+=et/(float)nHits; controls[time_interval-1].etMeanRMS[ieta-1][sign]+=nHits*pow(RMSet,2); controls[time_interval-1].etABRatio[ieta-1][sign]+=etB/etA; controls[time_interval-1].etABRatioRMS[ieta-1][sign]+=0.05*0.05*(etB/etA)*(etB/etA); //provisional value controls[time_interval-1].etMeanNoCorr[ieta-1][sign]+=etNoCorr/(float)nHits; controls[time_interval-1].etMeanNoCorrRMS[ieta-1][sign]+=nHits*pow(RMSetNoCorr,2); controls[time_interval-1].lcMean[ieta-1][sign]+=lc; controls[time_interval-1].lcMeanRMS[ieta-1][sign]+=nHits*pow(RMSlc,2); controls[time_interval-1].tlMean[ieta-1][sign]+=TMath::Exp(-1*TMath::Log(lc)/alphaDB(sign,ieta,iphi)); controls[time_interval-1].tlMeanRMS[ieta-1][sign]+=nHits*pow(RMSlc*alphaDB(sign,ieta,iphi),2); //approximation controls[time_interval-1].counterEta[ieta-1][sign]++; //Histories by tt controls[time_interval-1].nhitTowerMean[tt-1]+=nHits; controls[time_interval-1].etSumTowerMeanVsEtRef[tt-1]+=et; controls[time_interval-1].etTowerMean[tt-1]+=et/(float)nHits; controls[time_interval-1].etTowerMeanRMS[tt-1]+=nHits*pow(RMSet,2); controls[time_interval-1].etTowerMeanNoCorr[tt-1]+=etNoCorr/float(nHits); controls[time_interval-1].etTowerMeanNoCorrRMS[tt-1]+=nHits*pow(RMSetNoCorr,2); controls[time_interval-1].lcTowerMean[tt-1]+=lc; controls[time_interval-1].lcTowerMeanRMS[tt-1]+=nHits*pow(RMSlc,2); controls[time_interval-1].tlTowerMean[tt-1]+=TMath::Exp(-1*TMath::Log(lc)/alphaDB(sign,ieta,iphi)); controls[time_interval-1].tlTowerMeanRMS[tt-1]+=nHits*pow(RMSlc*alphaDB(sign,ieta,iphi),2); controls[time_interval-1].counterTower[tt-1]++; //Histories by xtal controls[time_interval-1].nhitXtalMean[xtal-1]+=nHits; controls[time_interval-1].etSumXtalMeanVsEtRef[xtal-1]+=et; controls[time_interval-1].etXtalMean[xtal-1]+=et/(float)nHits; controls[time_interval-1].etXtalMeanRMS[xtal-1]+=nHits*pow(RMSet,2); controls[time_interval-1].etXtalMeanNoCorr[xtal-1]+=etNoCorr/(float)nHits; controls[time_interval-1].etXtalMeanNoCorrRMS[xtal-1]+=nHits*pow(RMSetNoCorr,2); controls[time_interval-1].lcXtalMean[xtal-1]+=lc; controls[time_interval-1].lcXtalMeanRMS[xtal-1]+=nHits*pow(RMSlc,2); controls[time_interval-1].tlXtalMean[xtal-1]+=TMath::Exp(-1*TMath::Log(lc)/alphaDB(sign,ieta,iphi)); controls[time_interval-1].tlXtalMeanRMS[xtal-1]+=nHits*pow(RMSlc*alphaDB(sign,ieta,iphi),2); controls[time_interval-1].counterXtal[xtal-1]++; } int counterTotal=0; float nInterval[kIntervals]; float nIntervalError[kIntervals]; // float nIntervalError[kInterval]; float etTotal=0; float etTotalNoCorr=0; cout<<"loop ended"<<endl; for(int iinterval=0;iinterval<kIntervals;iinterval++){ if(controls[iinterval].counter!=0){ for (int i=0;i<kBarlRings;++i) { for(int j=0;j<kSides;++j){ controls[iinterval].etSumMean[i][j]=controls[iinterval].etSumMean[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].etMean[i][j]=controls[iinterval].etMean[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].etMeanRMS[i][j]=sqrt(controls[iinterval].etMeanRMS[i][j])/(controls[iinterval].nhitMean[i][j]);// i want eerror on mean std::cout << "i " << i << " j " << j << " etMean " << controls[iinterval].etMean[i][j] << " etMeanErr " << controls[iinterval].etMeanRMS[i][j] << std::endl; controls[iinterval].etMeanNoCorr[i][j]= controls[iinterval].etMeanNoCorr[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].etMeanNoCorrRMS[i][j]= sqrt(controls[iinterval].etMeanNoCorrRMS[i][j])/(controls[iinterval].nhitMean[i][j]);// i want eerror on mean controls[iinterval].etABRatio[i][j]=controls[iinterval].etABRatio[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].etABRatioRMS[i][j]=sqrt(controls[iinterval].etABRatioRMS[i][j])/sqrt(controls[iinterval].counterEta[i][j]);// i want eerror on mean controls[iinterval].lcMeanRMS[i][j]= sqrt(controls[iinterval].lcMeanRMS[i][j])/(controls[iinterval].nhitMean[i][j]);// i want eerror on mean controls[iinterval].lcMean[i][j]=controls[iinterval].lcMean[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].tlMeanRMS[i][j]= sqrt(controls[iinterval].tlMeanRMS[i][j])/(controls[iinterval].nhitMean[i][j]);// i want eerror on mean controls[iinterval].tlMean[i][j]=controls[iinterval].tlMean[i][j]/controls[iinterval].counterEta[i][j]; controls[iinterval].nhitMean[i][j]=controls[iinterval].nhitMean[i][j]/controls[iinterval].counterEta[i][j]; } } for (int i=0;i<kSM*kTowerPerSM;++i) { controls[iinterval].etSumTowerMeanVsEtRef[i]=controls[iinterval].etSumTowerMeanVsEtRef[i]/controls[iinterval].counterTower[i]; controls[iinterval].etTowerMean[i]=controls[iinterval].etTowerMean[i]/controls[iinterval].counterTower[i]; controls[iinterval].etTowerMeanRMS[i]=sqrt(controls[iinterval].etTowerMeanRMS[i])/(controls[iinterval].nhitTowerMean[i]);// i want eerror on mean controls[iinterval].etTowerMeanNoCorr[i]= controls[iinterval].etTowerMeanNoCorr[i]/controls[iinterval].counterTower[i]; controls[iinterval].etTowerMeanNoCorrRMS[i]= sqrt(controls[iinterval].etTowerMeanNoCorrRMS[i])/(controls[iinterval].nhitTowerMean[i]);// i want eerror on mean controls[iinterval].lcTowerMean[i]=controls[iinterval].lcTowerMean[i]/controls[iinterval].counterTower[i]; controls[iinterval].lcTowerMeanRMS[i]= sqrt(controls[iinterval].lcTowerMeanRMS[i])/(controls[iinterval].nhitTowerMean[i]);// i want eerror on mean controls[iinterval].tlTowerMean[i]=controls[iinterval].tlTowerMean[i]/controls[iinterval].counterTower[i]; controls[iinterval].tlTowerMeanRMS[i]= sqrt(controls[iinterval].tlTowerMeanRMS[i])/(controls[iinterval].nhitTowerMean[i]);// i want eerror on mean controls[iinterval].nhitTowerMean[i]=controls[iinterval].nhitTowerMean[i]/controls[iinterval].counterTower[i]; } for (int i=0;i<kSM*kXtalPerSM;++i) { controls[iinterval].etSumXtalMeanVsEtRef[i]=controls[iinterval].etSumXtalMeanVsEtRef[i]/controls[iinterval].counterXtal[i]; controls[iinterval].etXtalMean[i]=controls[iinterval].etXtalMean[i]/controls[iinterval].counterXtal[i]; controls[iinterval].etXtalMeanRMS[i]=sqrt(controls[iinterval].etXtalMeanRMS[i])/(controls[iinterval].nhitXtalMean[i]);// i want eerror on mean controls[iinterval].etXtalMeanNoCorr[i]= controls[iinterval].etXtalMeanNoCorr[i]/controls[iinterval].counterXtal[i]; controls[iinterval].etXtalMeanNoCorrRMS[i]= sqrt(controls[iinterval].etXtalMeanNoCorrRMS[i])/(controls[iinterval].nhitXtalMean[i]);// i want eerror on mean controls[iinterval].lcXtalMean[i]=controls[iinterval].lcXtalMean[i]/controls[iinterval].counterXtal[i]; controls[iinterval].lcXtalMeanRMS[i]= sqrt(controls[iinterval].lcXtalMeanRMS[i])/(controls[iinterval].nhitXtalMean[i]);// i want eerror on mean controls[iinterval].tlXtalMean[i]=controls[iinterval].tlXtalMean[i]/controls[iinterval].counterXtal[i]; controls[iinterval].tlXtalMeanRMS[i]= sqrt(controls[iinterval].tlXtalMeanRMS[i])/(controls[iinterval].nhitXtalMean[i]);// i want eerror on mean controls[iinterval].nhitXtalMean[i]=controls[iinterval].nhitXtalMean[i]/controls[iinterval].counterXtal[i]; } nInterval[iinterval]=intervals->intervalTime(iinterval); nIntervalError[iinterval]=0.; // nIntervalError[iinterval]=0; } } //Arrays to be used in the graph float etSumMeanVsRefArray[kIntervals]; float etSumMeanVsRefRMSArray[kIntervals]; float etMeanArray[kIntervals]; float etMeanRMSArray[kIntervals]; float etMeanNoCorrArray[kIntervals]; float etMeanNoCorrRMSArray[kIntervals]; float etABRatioArray[kIntervals]; float etABRatioRMSArray[kIntervals]; float lcMeanArray[kIntervals]; float lcMeanRMSArray[kIntervals]; float tlMeanArray[kIntervals]; float tlMeanRMSArray[kIntervals]; float nhitMeanArray[kIntervals]; float etSumTowerMeanVsRefArray[kIntervals]; float etSumTowerMeanVsRefRMSArray[kIntervals]; float etTowerMeanArray[kIntervals]; float etTowerMeanRMSArray[kIntervals]; float etTowerMeanNoCorrArray[kIntervals]; float etTowerMeanNoCorrRMSArray[kIntervals]; float lcTowerMeanArray[kIntervals]; float lcTowerMeanRMSArray[kIntervals]; float tlTowerMeanArray[kIntervals]; float tlTowerMeanRMSArray[kIntervals]; float nhitTowerMeanArray[kIntervals]; float etSumXtalMeanVsRefArray[kIntervals]; float etSumXtalMeanVsRefRMSArray[kIntervals]; float etXtalMeanArray[kIntervals]; float etXtalMeanRMSArray[kIntervals]; float etXtalMeanNoCorrArray[kIntervals]; float etXtalMeanNoCorrRMSArray[kIntervals]; float lcXtalMeanArray[kIntervals]; float lcXtalMeanRMSArray[kIntervals]; float tlXtalMeanArray[kIntervals]; float tlXtalMeanRMSArray[kIntervals]; float nhitXtalMeanArray[kIntervals]; int historyNormalizationInterval=20; // kIntervals=487; TFile *outFile=TFile::Open(outFileName+"_etaRing.root","recreate"); for (int i=0;i<kBarlRings;++i) { for(int j=0;j<kSides;++j){ std::cout << "Creating history for iring " << i+1 << "/85" << " side "<<j+1<<"/2"<<std::endl; float etref=0; float etSumOverRef=0; float etABRatioref=0; float etNoCorrref=0; float lcref=0; float tlref=0; float nhitref=0; int nref=0; for (int iref=-5;iref<6;++iref) { nref++; etSumOverRef+=controls[historyNormalizationInterval+iref].etSumMean[i][j]/((controls[historyNormalizationInterval+iref].etSumMean[2][0]+controls[historyNormalizationInterval+iref].etSumMean[2][1])/2.); etref+=controls[historyNormalizationInterval+iref].etMean[i][j]; etNoCorrref+=controls[historyNormalizationInterval+iref].etMeanNoCorr[i][j]; etABRatioref+=controls[historyNormalizationInterval+iref].etABRatio[i][j]; lcref+=controls[historyNormalizationInterval+iref].lcMean[i][j]; tlref+=controls[historyNormalizationInterval+iref].tlMean[i][j]; nhitref+=controls[historyNormalizationInterval+iref].nhitMean[i][j]; } etSumOverRef=etSumOverRef/nref; etref=etref/nref; etABRatioref=etABRatioref/nref; etNoCorrref=etNoCorrref/nref; lcref=lcref/nref; tlref=tlref/nref; nhitref=nhitref/nref; for(int iinterval=0;iinterval<kIntervals;iinterval++){ // cout<<controls[iinterval].etMeanNoCorr[i][j]<<" "<<controls[iinterval].etMeanNoCorrRMS[i][j]<<" "<<controls[iinterval].lcMean[i][j]<<" "<<controls[iinterval].lcMeanRMS[i][j]<<endl; //Normalizing to time reference interval float nXtalRing=controls[iinterval].counterEta[i][j]; float kFactor=1.; float kFactorAB=1.; // if (kfactorCorr) // kFactor=(1+(controls[iinterval].etMean[i][j]/etref-1.)*kfactor_alpha)/(controls[iinterval].etMean[i][j]/etref); // if (kfactorABCorr) // kFactorAB=(1+(controls[iinterval].etABRatio[i][j]/etABRatioref-1.)*kfactorAB_alpha)/(controls[iinterval].etABRatio[i][j]/etABRatioref); etSumMeanVsRefArray[iinterval]=1 + (((controls[iinterval].etSumMean[i][j]/((controls[iinterval].etSumMean[2][0]+controls[iinterval].etSumMean[2][1])/2.))/etSumOverRef)-1.)/2.; etSumMeanVsRefRMSArray[iinterval]=0.; etMeanArray[iinterval]=(controls[iinterval].etMean[i][j]/etref)*kFactor; etMeanRMSArray[iinterval]=(controls[iinterval].etMeanRMS[i][j]/etref)*kFactor; etMeanNoCorrArray[iinterval]=(controls[iinterval].etMeanNoCorr[i][j]/etNoCorrref)*kFactor; etMeanNoCorrRMSArray[iinterval]=(controls[iinterval].etMeanNoCorrRMS[i][j]/(etNoCorrref))*kFactor; etABRatioArray[iinterval]=(controls[iinterval].etABRatio[i][j]/etABRatioref)*kFactorAB; etABRatioRMSArray[iinterval]=(controls[iinterval].etABRatioRMS[i][j]/etABRatioref)*kFactorAB; nhitMeanArray[iinterval]=controls[iinterval].nhitMean[i][j]/nhitref; lcMeanArray[iinterval]=1/(controls[iinterval].lcMean[i][j]/lcref); lcMeanRMSArray[iinterval]=pow(lcref/controls[iinterval].lcMean[i][j],2)*controls[iinterval].lcMeanRMS[i][j]; tlMeanArray[iinterval]=controls[iinterval].tlMean[i][j]/tlref; tlMeanRMSArray[iinterval]=controls[iinterval].tlMeanRMS[i][j]/(tlref); //Now normalizing other regions to reference region // if (i!=0) // { // etMeanArray[iinterval]=etMeanArray[i][j][iinterval]/etMeanArray[0][iinterval]; // etMeanNoCorrArray[i][j][iinterval]=etMeanNoCorrArray[i][j][iinterval]/etMeanNoCorrArray[0][iinterval]; // nhitMeanArray[i][j][iinterval]=nhitMeanArray[i][j][iinterval]/nhitMeanArray[0][iinterval]; // lcMeanArray[i][j][iinterval]=lcMeanArray[i][j][iinterval]/lcMeanArray[0][iinterval]; // } } TGraph* nhitGraph=new TGraph(kIntervals,nInterval,&nhitMeanArray[0]); TString etaLabel="ieta_"; TString sideLabel="_side_"; etaLabel+=(i+1); sideLabel+=j; nhitGraph->SetName("nHit_"+etaLabel+sideLabel); nhitGraph->SetTitle("nHit_"+etaLabel+sideLabel); nhitGraph->GetYaxis()->SetTitle("nhit"); nhitGraph->GetXaxis()->SetTitle("interval"); nhitGraph->Write(); delete nhitGraph; TGraphErrors* etSumOverRefGraph=new TGraphErrors(kIntervals,nInterval,&etSumMeanVsRefArray[0],nIntervalError,&etSumMeanVsRefRMSArray[0]); etSumOverRefGraph->SetName("etSumOverRef_"+etaLabel+sideLabel); etSumOverRefGraph->SetTitle("etSumOverRef_"+etaLabel+sideLabel); etSumOverRefGraph->GetYaxis()->SetTitle("<et>"); etSumOverRefGraph->GetXaxis()->SetTitle("interval"); etSumOverRefGraph->Write(); delete etSumOverRefGraph; TGraphErrors* etGraph=new TGraphErrors(kIntervals,nInterval,&etMeanArray[0],nIntervalError,&etMeanRMSArray[0]); etGraph->SetName("et_"+etaLabel+sideLabel); etGraph->SetTitle("et_"+etaLabel+sideLabel); etGraph->GetYaxis()->SetTitle("<et>"); etGraph->GetXaxis()->SetTitle("interval"); etGraph->Write(); delete etGraph; TGraphErrors* etNoCorrGraph=new TGraphErrors(kIntervals,nInterval,&etMeanNoCorrArray[0],nIntervalError,&etMeanNoCorrRMSArray[0]); etNoCorrGraph->SetName("etNoCorr_"+etaLabel+sideLabel); etNoCorrGraph->SetTitle("etNoCorr_"+etaLabel+sideLabel); etNoCorrGraph->GetYaxis()->SetTitle("<etNoCorr>"); etNoCorrGraph->GetXaxis()->SetTitle("interval"); etNoCorrGraph->Write(); delete etNoCorrGraph; TGraphErrors* etABRatioGraph=new TGraphErrors(kIntervals,nInterval,&etABRatioArray[0],nIntervalError,&etABRatioRMSArray[0]); etABRatioGraph->SetName("etABRatio_"+etaLabel+sideLabel); etABRatioGraph->SetTitle("etABRatio_"+etaLabel+sideLabel); etABRatioGraph->GetYaxis()->SetTitle("<etABRatio>"); etABRatioGraph->GetXaxis()->SetTitle("interval"); etABRatioGraph->Write(); delete etABRatioGraph; TGraphErrors* lcGraph=new TGraphErrors(kIntervals,nInterval,&lcMeanArray[0],nIntervalError,&lcMeanRMSArray[0]); lcGraph->SetName("lc_"+etaLabel+sideLabel); lcGraph->SetTitle("lc_"+etaLabel+sideLabel); lcGraph->GetYaxis()->SetTitle("<tl>"); lcGraph->GetXaxis()->SetTitle("interval"); lcGraph->Write(); delete lcGraph; TGraphErrors* EtNoCorrvsTLGraph=new TGraphErrors((kIntervals-200),&tlMeanArray[200],&etMeanNoCorrArray[200],&tlMeanRMSArray[200],&etMeanNoCorrRMSArray[200]); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel+sideLabel); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel+sideLabel); EtNoCorrvsTLGraph->GetYaxis()->SetTitle("<etNoCorr>"); EtNoCorrvsTLGraph->GetXaxis()->SetTitle("<lc>"); EtNoCorrvsTLGraph->Write(); delete EtNoCorrvsTLGraph; } } outFile->Write(); outFile->Close(); outFile=TFile::Open(outFileName+"_itt.root","recreate"); for (int i=0;i<kSM*kTowerPerSM;++i) { std::cout << "Creating history for itt " << i+1 << "/" << kSM*kTowerPerSM << std::endl; float etref=0; float etNoCorrref=0; float lcref=0; float tlref=0; float nhitref=0; int nref=0; for (int iref=-5;iref<6;++iref) { nref++; etref+=controls[historyNormalizationInterval+iref].etTowerMean[i]; etNoCorrref+=controls[historyNormalizationInterval+iref].etTowerMeanNoCorr[i]; lcref+=controls[historyNormalizationInterval+iref].lcTowerMean[i]; tlref+=controls[historyNormalizationInterval+iref].tlTowerMean[i]; nhitref+=controls[historyNormalizationInterval+iref].nhitTowerMean[i]; } etref=etref/nref; etNoCorrref=etNoCorrref/nref; lcref=lcref/nref; tlref=tlref/nref; nhitref=nhitref/nref; for(int iinterval=0;iinterval<kIntervals;iinterval++){ //Normalizing to time reference interval float kFactor=1.; if (kfactorCorr) kFactor=(1+(controls[iinterval].etTowerMean[i]/etref-1.)*kfactor_alpha)/(controls[iinterval].etTowerMean[i]/etref); etTowerMeanArray[iinterval]=(controls[iinterval].etTowerMean[i]/etref)*kFactor; etTowerMeanRMSArray[iinterval]=(controls[iinterval].etTowerMeanRMS[i]/etref)*kFactor; etTowerMeanNoCorrArray[iinterval]=(controls[iinterval].etTowerMeanNoCorr[i]/etNoCorrref)*kFactor; etTowerMeanNoCorrRMSArray[iinterval]=(controls[iinterval].etTowerMeanNoCorrRMS[i]/etNoCorrref)*kFactor; nhitTowerMeanArray[iinterval]=controls[iinterval].nhitTowerMean[i]/nhitref; lcTowerMeanArray[iinterval]=1/(controls[iinterval].lcTowerMean[i]/lcref); lcTowerMeanRMSArray[iinterval]=pow(lcref/controls[iinterval].lcTowerMean[i],2)*controls[iinterval].lcTowerMeanRMS[i]; tlTowerMeanArray[iinterval]=controls[iinterval].tlTowerMean[i]/tlref; tlTowerMeanRMSArray[iinterval]=controls[iinterval].tlTowerMeanRMS[i]/(tlref); //Now normalizing other regions to reference region // if (i!=0) // { // etMeanArray[iinterval]=etMeanArray[iinterval]/etMeanArray[0][iinterval]; // etMeanNoCorrArray[iinterval]=etMeanNoCorrArray[iinterval]/etMeanNoCorrArray[0][iinterval]; // nhitMeanArray[iinterval]=nhitMeanArray[iinterval]/nhitMeanArray[0][iinterval]; // lcMeanArray[iinterval]=lcMeanArray[iinterval]/lcMeanArray[0][iinterval]; // } } TGraph* nhitGraph=new TGraph(kIntervals,nInterval,&nhitTowerMeanArray[0]); TString etaLabel="itt_"; etaLabel+=(i+1); nhitGraph->SetName("nHit_"+etaLabel); nhitGraph->SetTitle("nHit_"+etaLabel); nhitGraph->GetYaxis()->SetTitle("nhit"); nhitGraph->GetXaxis()->SetTitle("interval"); nhitGraph->Write(); delete nhitGraph; TGraphErrors* etGraph=new TGraphErrors(kIntervals,nInterval,&etTowerMeanArray[0],nIntervalError,&etTowerMeanRMSArray[0]); etGraph->SetName("et_"+etaLabel); etGraph->SetTitle("et_"+etaLabel); etGraph->GetYaxis()->SetTitle("<et>/<et ieta=1>"); etGraph->GetXaxis()->SetTitle("interval"); etGraph->Write(); delete etGraph; TGraphErrors* etNoCorrGraph=new TGraphErrors(kIntervals,nInterval,&etTowerMeanNoCorrArray[0],nIntervalError,&etTowerMeanNoCorrRMSArray[0]); etNoCorrGraph->SetName("etNoCorr_"+etaLabel); etNoCorrGraph->SetTitle("etNoCorr_"+etaLabel); etNoCorrGraph->GetYaxis()->SetTitle("<etNoCorr>"); etNoCorrGraph->GetXaxis()->SetTitle("interval"); etNoCorrGraph->Write(); delete etNoCorrGraph; TGraphErrors* lcGraph=new TGraphErrors(kIntervals,nInterval,&lcTowerMeanArray[0],nIntervalError,&lcTowerMeanRMSArray[0]); lcGraph->SetName("lc_"+etaLabel); lcGraph->SetTitle("lc_"+etaLabel); lcGraph->GetYaxis()->SetTitle("<tl>"); lcGraph->GetXaxis()->SetTitle("interval"); lcGraph->Write(); delete lcGraph; TGraphErrors* EtNoCorrvsTLGraph=new TGraphErrors((kIntervals-200),&tlTowerMeanArray[200],&etTowerMeanNoCorrArray[200],&tlTowerMeanRMSArray[200],&etTowerMeanNoCorrRMSArray[200]); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel); EtNoCorrvsTLGraph->GetYaxis()->SetTitle("<etNoCorr>"); EtNoCorrvsTLGraph->GetXaxis()->SetTitle("<lc>"); EtNoCorrvsTLGraph->Write(); delete EtNoCorrvsTLGraph; } outFile->Write(); outFile->Close(); outFile=TFile::Open(outFileName+"_ixtal.root","recreate"); for (int i=0;i<kSM*kXtalPerSM;++i) { std::cout << "Creating history for ixtal " << i+1 << "/" << kSM*kXtalPerSM << std::endl; float etref=0; float etNoCorrref=0; float lcref=0; float tlref=0; float nhitref=0; int nref=0; for (int iref=-5;iref<6;++iref) { nref++; etref+=controls[historyNormalizationInterval+iref].etXtalMean[i]; etNoCorrref+=controls[historyNormalizationInterval+iref].etXtalMeanNoCorr[i]; lcref+=controls[historyNormalizationInterval+iref].lcXtalMean[i]; tlref+=controls[historyNormalizationInterval+iref].tlXtalMean[i]; nhitref+=controls[historyNormalizationInterval+iref].nhitXtalMean[i]; } etref=etref/nref; etNoCorrref=etNoCorrref/nref; lcref=lcref/nref; tlref=tlref/nref; nhitref=nhitref/nref; for(int iinterval=0;iinterval<kIntervals;iinterval++){ //Normalizing to time reference interval float kFactor=1.; if (kfactorCorr) kFactor=(1+(controls[iinterval].etXtalMean[i]/etref-1.)*kfactor_alpha)/(controls[iinterval].etXtalMean[i]/etref); etXtalMeanArray[iinterval]=(controls[iinterval].etXtalMean[i]/etref)*kFactor; etXtalMeanRMSArray[iinterval]=(controls[iinterval].etXtalMeanRMS[i]/etref)*kFactor; etXtalMeanNoCorrArray[iinterval]=(controls[iinterval].etXtalMeanNoCorr[i]/etNoCorrref)*kFactor; etXtalMeanNoCorrRMSArray[iinterval]=(controls[iinterval].etXtalMeanNoCorrRMS[i]/etNoCorrref)*kFactor; nhitXtalMeanArray[iinterval]=controls[iinterval].nhitXtalMean[i]/nhitref; lcXtalMeanArray[iinterval]=1/(controls[iinterval].lcXtalMean[i]/lcref); lcXtalMeanRMSArray[iinterval]=pow(lcref/controls[iinterval].lcXtalMean[i],2)*controls[iinterval].lcXtalMeanRMS[i]; tlXtalMeanArray[iinterval]=controls[iinterval].tlXtalMean[i]/tlref; tlXtalMeanRMSArray[iinterval]=controls[iinterval].tlXtalMeanRMS[i]/(tlref); //Now normalizing other regions to reference region // if (i!=0) // { // etMeanArray[iinterval]=etMeanArray[iinterval]/etMeanArray[0][iinterval]; // etMeanNoCorrArray[iinterval]=etMeanNoCorrArray[iinterval]/etMeanNoCorrArray[0][iinterval]; // nhitMeanArray[iinterval]=nhitMeanArray[iinterval]/nhitMeanArray[0][iinterval]; // lcMeanArray[iinterval]=lcMeanArray[iinterval]/lcMeanArray[0][iinterval]; // } } TGraph* nhitGraph=new TGraph(kIntervals,nInterval,&nhitXtalMeanArray[0]); TString etaLabel="ixtal_"; etaLabel+=(i+1); nhitGraph->SetName("nHit_"+etaLabel); nhitGraph->SetTitle("nHit_"+etaLabel); nhitGraph->GetYaxis()->SetTitle("nhit"); nhitGraph->GetXaxis()->SetTitle("interval"); nhitGraph->Write(); delete nhitGraph; TGraphErrors* etGraph=new TGraphErrors(kIntervals,nInterval,&etXtalMeanArray[0],nIntervalError,&etXtalMeanRMSArray[0]); etGraph->SetName("et_"+etaLabel); etGraph->SetTitle("et_"+etaLabel); etGraph->GetYaxis()->SetTitle("<et>/<et ieta=1>"); etGraph->GetXaxis()->SetTitle("interval"); etGraph->Write(); delete etGraph; TGraphErrors* etNoCorrGraph=new TGraphErrors(kIntervals,nInterval,&etXtalMeanNoCorrArray[0],nIntervalError,&etXtalMeanNoCorrRMSArray[0]); etNoCorrGraph->SetName("etNoCorr_"+etaLabel); etNoCorrGraph->SetTitle("etNoCorr_"+etaLabel); etNoCorrGraph->GetYaxis()->SetTitle("<etNoCorr>"); etNoCorrGraph->GetXaxis()->SetTitle("interval"); etNoCorrGraph->Write(); delete etNoCorrGraph; TGraphErrors* lcGraph=new TGraphErrors(kIntervals,nInterval,&lcXtalMeanArray[0],nIntervalError,&lcXtalMeanRMSArray[0]); lcGraph->SetName("lc_"+etaLabel); lcGraph->SetTitle("lc_"+etaLabel); lcGraph->GetYaxis()->SetTitle("<tl>"); lcGraph->GetXaxis()->SetTitle("interval"); lcGraph->Write(); delete lcGraph; TGraphErrors* EtNoCorrvsTLGraph=new TGraphErrors((kIntervals-200),&tlXtalMeanArray[200],&etXtalMeanNoCorrArray[200],&tlXtalMeanRMSArray[200],&etXtalMeanNoCorrRMSArray[200]); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel); EtNoCorrvsTLGraph->SetName("EtNoCorrvsTL_"+etaLabel); EtNoCorrvsTLGraph->GetYaxis()->SetTitle("<etNoCorr>"); EtNoCorrvsTLGraph->GetXaxis()->SetTitle("<lc>"); EtNoCorrvsTLGraph->Write(); delete EtNoCorrvsTLGraph; } outFile->Write(); outFile->Close(); }
void doBeamSpotVariations::Loop() { // In a ROOT session, you can do: // Root > .L doBeamSpotVariations.C // Root > doBeamSpotVariations t // Root > t.GetEntry(12); // Fill t data members with entry number 12 // Root > t.Show(); // Show values of entry 12 // Root > t.Show(16); // Read and show values of entry 16 // Root > t.Loop(); // Loop on all entries // // This is the loop skeleton where: // jentry is the global entry number in the chain // ientry is the entry number in the current Tree // Note that the argument to GetEntry must be: // jentry for TChain::GetEntry // ientry for TTree::GetEntry and TBranch::GetEntry // // To read only selected branches, Insert statements like: // METAHOD1: // fChain->SetBranchStatus("*",0); // disable all branches // fChain->SetBranchStatus("branchname",1); // activate branchname // METHOD2: replace line // fChain->GetEntry(jentry); //read all branches //by b_branchname->GetEntry(ientry); //read only this branch if (!intervals) return; if (fChain == 0) return; Long64_t nentries = fChain->GetEntries(); std::vector<variablesToControl> controls; std::vector<variablesToControl_ee> controls_ee; int kIntervals=intervals->numberOfIntervals(); controls.reserve(kIntervals); controls_ee.reserve(kIntervals); unsigned long int nHitsEB[kIntervals]; unsigned long int nHitsEE[kIntervals]; cout<<"creating variables"<<endl; for(int iinterval=0;iinterval<kIntervals;iinterval++){ controls[iinterval].reset(); controls_ee[iinterval].reset(); nHitsEB[iinterval]=0; nHitsEE[iinterval]=0; } std::vector<bsInfo> bsInfos; bsInfos.reserve(kIntervals); for(int iinterval=0;iinterval<kIntervals;iinterval++){ bsInfos[iinterval].reset(); } TFile *fbs=TFile::Open(bsInfoFile); if (!fbs->IsOpen()) std::cout << "Cannot open " << bsInfoFile << std::endl; TTree* bsInfoTree= (TTree*)fbs->Get("bsFinalTree"); int timeVar; unsigned int nEvents; float bsPosVar=0,bsWidVar=0; TBranch *b_time=bsInfoTree->GetBranch("time_interval"); TBranch *b_events=bsInfoTree->GetBranch("nEvents"); TBranch *b_bsPos=bsInfoTree->GetBranch("bsPos"); TBranch *b_bsWid=bsInfoTree->GetBranch("bsWid"); bsInfoTree->SetBranchAddress("time_interval", &timeVar, &b_time); bsInfoTree->SetBranchAddress("nEvents", &nEvents, &b_events); bsInfoTree->SetBranchAddress("bsPos", &bsPosVar, &b_bsPos); bsInfoTree->SetBranchAddress("bsWid", &bsWidVar, &b_bsWid); int nentries_bs = bsInfoTree->GetEntries(); for(int jentry=0;jentry<nentries_bs;++jentry){ bsInfoTree->GetEntry(jentry); bsInfos[timeVar-1].bsPos=bsPosVar; bsInfos[timeVar-1].bsWid=bsWidVar; bsInfos[timeVar-1].nEvents=nEvents; } std::cout << "Read beamSpot informations for " << nentries_bs << " intervals " << std::endl; std::cout << "Opening eeIndicesMap " << eeIndicesFile << std::endl; TFile *fee=TFile::Open(eeIndicesFile); if (!fee->IsOpen()) std::cout << "Cannot open " << eeIndicesFile << std::endl; TTree* eeIndicesTree= (TTree*)fee->Get("eeIndices"); int ixVar,iyVar,signVar,iringVar,ixtalVar,iSCVar,iLMVar; TBranch *b_ix=eeIndicesTree->GetBranch("ix"); TBranch *b_iy=eeIndicesTree->GetBranch("iy"); TBranch *b_sig=eeIndicesTree->GetBranch("sign"); TBranch *b_iring=eeIndicesTree->GetBranch("iring"); TBranch *b_ixtal=eeIndicesTree->GetBranch("ixtal"); TBranch *b_isc=eeIndicesTree->GetBranch("isc"); TBranch *b_ilm=eeIndicesTree->GetBranch("ilm"); eeIndicesTree->SetBranchAddress("ix", &ixVar, &b_ix); eeIndicesTree->SetBranchAddress("iy", &iyVar, &b_iy); eeIndicesTree->SetBranchAddress("sign", &signVar, &b_sig); eeIndicesTree->SetBranchAddress("iring", &iringVar, &b_iring); eeIndicesTree->SetBranchAddress("ixtal", &ixtalVar, &b_ixtal); eeIndicesTree->SetBranchAddress("isc", &iSCVar, &b_isc); eeIndicesTree->SetBranchAddress("ilm", &iLMVar, &b_ilm); int nentries_ee = eeIndicesTree->GetEntries(); int endcapRings[kEndcWedgesX][kEndcWedgesY][kSides]; int endcapXtals[kEndcWedgesX][kEndcWedgesY][kSides]; int endcapSCs[kEndcWedgesX][kEndcWedgesY][kSides]; int endcapLMs[kEndcWedgesX][kEndcWedgesY][kSides]; for (int isign=0;isign<kSides;++isign) for (int ix=0;ix<kEndcWedgesX;++ix) for (int iy=0;iy<kEndcWedgesX;++iy) { endcapRings[ix][iy][isign]=-1; endcapXtals[ix][iy][isign]=-1; endcapSCs[ix][iy][isign]=-1; endcapLMs[ix][iy][isign]=-1; } for(int jentry=0;jentry<nentries_ee;++jentry) { eeIndicesTree->GetEntry(jentry); endcapRings[ixVar-1][iyVar-1][signVar]=iringVar; endcapXtals[ixVar-1][iyVar-1][signVar]=ixtalVar; endcapSCs[ixVar-1][iyVar-1][signVar]=iSCVar; endcapLMs[ixVar-1][iyVar-1][signVar]=iLMVar; } std::cout << "Read eeIndices for " << nentries_ee << " xtals " << std::endl; TF1* bsCorrections[85]; TF1* bsCorrections_ee[kEndcRings]; if (applyBSCorrection) { std::cout << "Reading beamSpot corrections file " << bsCorrectionFile << std::endl; TFile *bsWeights = TFile::Open(bsCorrectionFile); //Only for EB at the moment for (int iieta=0;iieta<85;++iieta) // for (int iside=0;iside<2;++iside) { TString name="f_bsAsymm_ieta_"; name+=(iieta+1); // name+="_side_"; // name+=iside; std::cout << "Getting " << name << std::endl; bsCorrections[iieta]=(TF1*)bsWeights->Get(name); } for (int iieta=0;iieta<kEndcRings;++iieta) // for (int iside=0;iside<2;++iside) { TString name="f_bsAsymm_ee_iring_"; name+=(iieta+1); // name+="_side_"; // name+=iside; std::cout << "Getting " << name << std::endl; bsCorrections_ee[iieta]=(TF1*)bsWeights->Get(name); } } TF1* lumiCorrections[85]; TF1* lumiCorrections_ee[kEndcRings]; if (applyLumiCorrection) { std::cout << "Reading lumi corrections file " << bsCorrectionFile << std::endl; TFile *bsWeights = TFile::Open(bsCorrectionFile); //Only for EB at the moment for (int iieta=0;iieta<85;++iieta) // for (int iside=0;iside<2;++iside) { TString name="f_lumiAsymm_ieta_"; name+=(iieta+1); // name+="_side_"; // name+=iside; std::cout << "Getting " << name << std::endl; lumiCorrections[iieta]=(TF1*)bsWeights->Get(name); } for (int iieta=0;iieta<kEndcRings;++iieta) // for (int iside=0;iside<2;++iside) { TString name="f_lumiAsymm_ee_iring_"; name+=(iieta+1); // name+="_side_"; // name+=iside; std::cout << "Getting " << name << std::endl; lumiCorrections_ee[iieta]=(TF1*)bsWeights->Get(name); } Long64_t nbytes = 0, nb = 0; for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; nb = fChain->GetEntry(jentry); nbytes += nb; // if (Cut(ientry) < 0) continue; //Only EB for the moment if (time_interval>186 && time_interval<242) continue; if (det==0) { nHitsEB[time_interval-1]+=nHits; } else if (det==1) { nHitsEE[time_interval-1]+=nHits; } } for(int iinterval=0;iinterval<kIntervals;iinterval++) { bsInfos[iinterval].nHitsMeanEB = double(nHitsEB[iinterval])/double(bsInfos[iinterval].nEvents); bsInfos[iinterval].nHitsMeanEE = double(nHitsEE[iinterval])/double(bsInfos[iinterval].nEvents); std::cout << "Interval " << iinterval << " <nHitsEB>: " << bsInfos[iinterval].nHitsMeanEB << " <nHitsEE>: " << bsInfos[iinterval].nHitsMeanEE << std::endl; } } Long64_t nbytes = 0, nb = 0; for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; nb = fChain->GetEntry(jentry); nbytes += nb; // if (Cut(ientry) < 0) continue; //Only EB for the moment if (time_interval>186 && time_interval<242) continue; double bsCorr=1.; double lumiCorr=1.; if (det==0) { if (applyBSCorrection) { if (sign>0) bsCorr=bsCorrections[ieta-1]->Eval(bsInfos[time_interval-1].bsPos); else bsCorr=bsCorrections[ieta-1]->Eval(-bsInfos[time_interval-1].bsPos); // if (TMath::Abs(ieta)==1) // std::cout << "time " << time_interval-1 << " bsPos " << bsInfos[time_interval-1].bsPos << " ieta " << ieta << " sign " << sign << " bsCorr " << bsCorr << std::endl; } if (applyLumiCorrection) { lumiCorr=lumiCorrections[ieta-1]->Eval(bsInfos[time_interval-1].nHitsMeanEB); } // std::cout << bsCorr << std::endl; et=et/bsCorr; et=et/lumiCorr; controls[time_interval-1].counter++; controls[time_interval-1].totalHits+=nHits; //Histories by eta ring controls[time_interval-1].nhitMean[ieta-1][sign]+=nHits; controls[time_interval-1].etSumMean[ieta-1][sign]+=et; controls[time_interval-1].etSumMeanRMS[ieta-1][sign]+=nHits*pow(RMSet,2); controls[time_interval-1].etMean[ieta-1][sign]+=et/(float)nHits; controls[time_interval-1].etMeanRMS[ieta-1][sign]+=pow(RMSet,2)/(float)nHits; controls[time_interval-1].lcMean[ieta-1][sign]+=lc/(float)nHits; controls[time_interval-1].lcMeanRMS[ieta-1][sign]+=pow(RMSlc,2)/(float)nHits; controls[time_interval-1].tlMean[ieta-1][sign]+=TMath::Exp(-1*TMath::Log(lc)/alphaDB(sign,ieta,iphi)); controls[time_interval-1].tlMeanRMS[ieta-1][sign]+=pow(RMSlc*alphaDB(sign,ieta,iphi),2)/(float)nHits; //approximation controls[time_interval-1].counterEta[ieta-1][sign]++; } else if (det==1) { int iring=(endcapRings[ieta-1][iphi-1][sign]); if (applyBSCorrection) { if (sign>0) bsCorr=bsCorrections_ee[iring]->Eval(bsInfos[time_interval-1].bsPos); else bsCorr=bsCorrections_ee[iring]->Eval(-bsInfos[time_interval-1].bsPos); // if (TMath::Abs(ieta)==1) // std::cout << "time " << time_interval-1 << " bsPos " << bsInfos[time_interval-1].bsPos << " ieta " << ieta << " sign " << sign << " bsCorr " << bsCorr << std::endl; } if (applyLumiCorrection) { lumiCorr=lumiCorrections_ee[iring]->Eval(bsInfos[time_interval-1].nHitsMeanEB); } // std::cout << bsCorr << std::endl; et=et/bsCorr; et=et/lumiCorr; controls_ee[time_interval-1].counter++; controls_ee[time_interval-1].totalHits+=nHits; //Histories by eta ring controls_ee[time_interval-1].nhitMean[iring][sign]+=nHits; controls_ee[time_interval-1].etSumMean[iring][sign]+=et; controls_ee[time_interval-1].etSumMeanRMS[iring][sign]+=nHits*pow(RMSet,2); controls_ee[time_interval-1].etMean[iring][sign]+=et/(float)nHits; controls_ee[time_interval-1].etMeanRMS[iring][sign]+=pow(RMSet,2)/(float)nHits; controls_ee[time_interval-1].lcMean[iring][sign]+=lc/(float)nHits; controls_ee[time_interval-1].lcMeanRMS[iring][sign]+=pow(RMSlc,2)/(float)nHits; controls_ee[time_interval-1].tlMean[iring][sign]+=TMath::Exp(-1*TMath::Log(lc)/alphaDB(sign,ieta,iphi)); controls_ee[time_interval-1].tlMeanRMS[iring][sign]+=pow(RMSlc*alphaDB(sign,ieta,iphi),2)/(float)nHits; //approximation controls_ee[time_interval-1].counterEta[iring][sign]++; } } int counterTotal=0; float nInterval[kIntervals]; float nIntervalError[kIntervals]; // float nIntervalError[kInterval]; float etTotal=0; float etTotalNoCorr=0; cout<<"loop ended"<<endl; for(int iinterval=0;iinterval<kIntervals;iinterval++){ if(controls[iinterval].counter!=0){ controls[iinterval].nHitsMean=(double)controls[iinterval].totalHits/(double)bsInfos[iinterval].nEvents; std::cout << "Interval " << iinterval << " <nHitsEBPerEvent> " << controls[iinterval].nHitsMean << std::endl; for (int i=0;i<kBarlRings;++i) { for(int j=0;j<kSides;++j){ controls[iinterval].etSumMean[i][j]=controls[iinterval].etSumMean[i][j]/(float)controls[iinterval].counterEta[i][j]; controls[iinterval].etSumMeanRMS[i][j]=sqrt(controls[iinterval].etSumMeanRMS[i][j])/(float)controls[iinterval].counterEta[i][j]; controls[iinterval].etMean[i][j]=controls[iinterval].etMean[i][j]/(float)controls[iinterval].counterEta[i][j]; controls[iinterval].etMeanRMS[i][j]=sqrt(controls[iinterval].etMeanRMS[i][j])/((float)controls[iinterval].counterEta[i][j]);// i want eerror on mean controls[iinterval].lcMeanRMS[i][j]= sqrt(controls[iinterval].lcMeanRMS[i][j])/((float)controls[iinterval].counterEta[i][j]);// i want eerror on mean controls[iinterval].lcMean[i][j]=controls[iinterval].lcMean[i][j]/(float)controls[iinterval].counterEta[i][j]; controls[iinterval].tlMeanRMS[i][j]= sqrt(controls[iinterval].tlMeanRMS[i][j])/((float)controls[iinterval].counterEta[i][j]);// i want eerror on mean controls[iinterval].tlMean[i][j]=controls[iinterval].tlMean[i][j]/(float)controls[iinterval].counterEta[i][j]; controls[iinterval].nhitMean[i][j]=controls[iinterval].nhitMean[i][j]/(float)controls[iinterval].counterEta[i][j]; } } nInterval[iinterval]=intervals->intervalTime(iinterval); nIntervalError[iinterval]=0.; } if(controls_ee[iinterval].counter!=0){ controls_ee[iinterval].nHitsMean=(double)controls_ee[iinterval].totalHits/(double)bsInfos[iinterval].nEvents; std::cout << "Interval " << iinterval << " <nHitsEEPerEvent> " << controls_ee[iinterval].nHitsMean << std::endl; for (int i=0;i<kEndcRings;++i) { for(int j=0;j<kSides;++j){ controls_ee[iinterval].etSumMean[i][j]=controls_ee[iinterval].etSumMean[i][j]/(float)controls_ee[iinterval].counterEta[i][j]; controls_ee[iinterval].etSumMeanRMS[i][j]=sqrt(controls_ee[iinterval].etSumMeanRMS[i][j])/(float)controls_ee[iinterval].counterEta[i][j]; controls_ee[iinterval].etMean[i][j]=controls_ee[iinterval].etMean[i][j]/(float)controls_ee[iinterval].counterEta[i][j]; controls_ee[iinterval].etMeanRMS[i][j]=sqrt(controls_ee[iinterval].etMeanRMS[i][j])/((float)controls_ee[iinterval].counterEta[i][j]);// i want eerror on mean controls_ee[iinterval].lcMeanRMS[i][j]= sqrt(controls_ee[iinterval].lcMeanRMS[i][j])/((float)controls_ee[iinterval].counterEta[i][j]);// i want eerror on mean controls_ee[iinterval].lcMean[i][j]=controls_ee[iinterval].lcMean[i][j]/(float)controls_ee[iinterval].counterEta[i][j]; controls_ee[iinterval].tlMeanRMS[i][j]= sqrt(controls_ee[iinterval].tlMeanRMS[i][j])/((float)controls_ee[iinterval].counterEta[i][j]);// i want eerror on mean controls_ee[iinterval].tlMean[i][j]=controls_ee[iinterval].tlMean[i][j]/(float)controls_ee[iinterval].counterEta[i][j]; controls_ee[iinterval].nhitMean[i][j]=controls_ee[iinterval].nhitMean[i][j]/(float)controls_ee[iinterval].counterEta[i][j]; } } } } TProfile* bsAsymm[85]; TProfile* lumiAsymm[85]; TProfile* bsWidAsymm[85]; TProfile* bsAsymm_ee[kEndcRings]; TProfile* lumiAsymm_ee[kEndcRings]; TProfile* bsWidAsymm_ee[kEndcRings]; for (int i=0;i<85;++i) { TString name="bsAsymm_ieta_"; name+=(i+1); bsAsymm[i]=new TProfile(name,name,41,-2.05,2.05); name="lumiAsymm_ieta_"; name+=(i+1); lumiAsymm[i]=new TProfile(name,name,50,0.,300.); name="bsWidAsymm_ieta_"; name+=(i+1); bsWidAsymm[i]=new TProfile(name,name,60,4.,7.); } for (int i=0;i<kEndcRings;++i) { TString name="bsAsymm_ee_iring_"; name+=(i+1); bsAsymm_ee[i]=new TProfile(name,name,41,-2.05,2.05); name="lumiAsymm_ee_iring_"; name+=(i+1); lumiAsymm_ee[i]=new TProfile(name,name,50,0.,300.); name="bsWidAsymm_ee_iring_"; name+=(i+1); bsWidAsymm_ee[i]=new TProfile(name,name,60,4.,7.); } for(int iinterval=0;iinterval<kIntervals;iinterval++){ if(controls[iinterval].counter!=0){ for (int i=0;i<kBarlRings;++i) { // std::cout << bsInfos[iinterval].bsPos << "," << (controls[iinterval].etSumMean[i][1]-controls[iinterval].etSumMean[i][0])/((controls[iinterval].etSumMean[i][1]+controls[iinterval].etSumMean[i][0])/2.) << std::endl; // bsAsymm[i]->Fill(bsInfos[iinterval].bsPos,((controls[iinterval].etSumMean[i][1]-controls[iinterval].etSumMean[i][0])/((controls[iinterval].etSumMean[i][1]+controls[iinterval].etSumMean[i][0])/2.))/2.); bsAsymm[i]->Fill(bsInfos[iinterval].bsPos,((controls[iinterval].etSumMean[i][1])/((controls[iinterval].etSumMean[i][1]+controls[iinterval].etSumMean[i][0])/2.))); lumiAsymm[i]->Fill(controls[iinterval].nHitsMean,((controls[iinterval].etSumMean[i][1])/((controls[iinterval].etSumMean[9][1]+controls[iinterval].etSumMean[9][0])/2.))); bsWidAsymm[i]->Fill(bsInfos[iinterval].bsWid,((controls[iinterval].etSumMean[i][1])/((controls[iinterval].etSumMean[9][1]+controls[iinterval].etSumMean[9][0])/2.))); } for (int i=0;i<kEndcRings;++i) { // std::cout << bsInfos[iinterval].bsPos << "," << (controls[iinterval].etSumMean[i][1]-controls[iinterval].etSumMean[i][0])/((controls[iinterval].etSumMean[i][1]+controls[iinterval].etSumMean[i][0])/2.) << std::endl; // bsAsymm[i]->Fill(bsInfos[iinterval].bsPos,((controls[iinterval].etSumMean[i][1]-controls[iinterval].etSumMean[i][0])/((controls[iinterval].etSumMean[i][1]+controls[iinterval].etSumMean[i][0])/2.))/2.); std::cout << bsInfos[iinterval].bsPos << "," << ((controls_ee[iinterval].etSumMean[i][1])/((controls_ee[iinterval].etSumMean[i][1]+controls_ee[iinterval].etSumMean[i][0])/2.)) << std::endl; bsAsymm_ee[i]->Fill(bsInfos[iinterval].bsPos,((controls_ee[iinterval].etSumMean[i][1])/((controls_ee[iinterval].etSumMean[i][1]+controls_ee[iinterval].etSumMean[i][0])/2.))); lumiAsymm_ee[i]->Fill(controls[iinterval].nHitsMean,((controls_ee[iinterval].etSumMean[i][1])/((controls[iinterval].etSumMean[9][1]+controls[iinterval].etSumMean[9][0])/2.))); bsWidAsymm_ee[i]->Fill(bsInfos[iinterval].bsWid,((controls_ee[iinterval].etSumMean[i][1])/((controls[iinterval].etSumMean[9][1]+controls[iinterval].etSumMean[9][0])/2.))); } } } TFile *outFile=TFile::Open(outFileName,outFileMode); for (int i=0;i<85;++i) { if (!applyBSCorrection && !applyLumiCorrection) { TString name="f_bsAsymm_ieta_"; name+=(i+1); std::cout << name << std::endl; bsAsymm[i]->Fit("pol1"); TF1* f=bsAsymm[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,1.); // f_corr->SetParameter(1,f->GetParameter(1)); f_corr->Write(name); bsAsymm[i]->Write(); } if (applyBSCorrection && applyLumiCorrection) { TString name="f_bsWidAsymm_ieta_"; name+=(i+1); std::cout << name << std::endl; bsWidAsymm[i]->Fit("pol1","","",4.5,5.2); TF1* f= (TF1*) bsWidAsymm[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,(f->GetParameter(0))/(f->GetParameter(0)+5*f->GetParameter(1))); f_corr->SetParameter(1,f->GetParameter(1)/(f->GetParameter(0)+5*f->GetParameter(1))); f_corr->Write(name); bsWidAsymm[i]->Write(); } if (applyBSCorrection && !applyLumiCorrection) { TString name="f_lumiAsymm_ieta_"; name+=(i+1); std::cout << name << std::endl; lumiAsymm[i]->Fit("pol1","","",0.,50.); TF1* f= (TF1*) lumiAsymm[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,(f->GetParameter(0))/(f->GetParameter(0)+20*f->GetParameter(1))); f_corr->SetParameter(1,f->GetParameter(1)/(f->GetParameter(0)+20*f->GetParameter(1))); f_corr->Write(name); lumiAsymm[i]->Write(); } } for (int i=0;i<kEndcRings;++i) { if (!applyBSCorrection && !applyLumiCorrection) { TString name="f_bsAsymm_ee_iring_"; name+=(i+1); std::cout << name << std::endl; bsAsymm_ee[i]->Fit("pol1"); TF1* f=bsAsymm_ee[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,1.); // f_corr->SetParameter(1,f->GetParameter(1)); f_corr->Write(name); bsAsymm_ee[i]->Write(); } if (applyBSCorrection && applyLumiCorrection) { TString name="f_bsWidAsymm_ee_iring_"; name+=(i+1); std::cout << name << std::endl; bsWidAsymm_ee[i]->Fit("pol1","","",4.5,5.2); TF1* f= (TF1*) bsWidAsymm_ee[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,(f->GetParameter(0))/(f->GetParameter(0)+5*f->GetParameter(1))); f_corr->SetParameter(1,f->GetParameter(1)/(f->GetParameter(0)+5*f->GetParameter(1))); f_corr->Write(name); bsWidAsymm_ee[i]->Write(); } if (applyBSCorrection && !applyLumiCorrection) { TString name="f_lumiAsymm_ee_iring_"; name+=(i+1); std::cout << name << std::endl; lumiAsymm_ee[i]->Fit("pol1","","",0.,50.); TF1* f= (TF1*) lumiAsymm_ee[i]->GetFunction("pol1"); TF1* f_corr=(TF1*)f->Clone(name); f_corr->SetParameter(0,(f->GetParameter(0))/(f->GetParameter(0)+20*f->GetParameter(1))); f_corr->SetParameter(1,f->GetParameter(1)/(f->GetParameter(0)+20*f->GetParameter(1))); f_corr->Write(name); lumiAsymm_ee[i]->Write(); } } outFile->Write(); outFile->Close(); }