#include #include typedef struct optic_t{ Double_t S; Double_t BETX; Double_t BETY; Double_t MUX; Double_t MUY; Double_t DX; Double_t DPX; Double_t DDX; Double_t DDPX; Double_t WX; Double_t WY; Double_t PHIX; Double_t PHIY; Double_t K1L; Double_t K2L; }; void read(){ optic_t entry1,entry2,entry3; Char_t name[17]; TTree *tree=new TTree("tree","optics data"); tree->Branch("optics",&entry2.S,"S/D:BETX/D:BETY:MUX:MUY:DX:DPX:DDX:DDPX:WX:WY:PHIX:PHIY:K1L:K2L"); tree->Branch("elements",name,"name/C"); int i=0; char ch=0; char str[400]; string name_str; ifstream from("ctau-SIR.txt"); while(from.get(ch) && (ch=='*' || ch=='$' || ch=='@')){ from.getline(str,400); // cout<>entry1.S>>name_str>>entry1.BETX>>entry1.BETY>>entry1.MUX>>entry1.MUY>>entry1.DX>> entry1.DPX>>entry1.DDX>>entry1.DDPX>>entry1.WX>>entry1.WY>>entry1.PHIX>> entry1.PHIY>>entry1.K1L>>entry1.K2L){ if(entry1.K1L!=0 || entry1.K2L!=0){ from>>entry2.S>>name_str>>entry2.BETX>>entry2.BETY>>entry2.MUX>>entry2.MUY>>entry2.DX>> entry2.DPX>>entry2.DDX>>entry2.DDPX>>entry2.WX>>entry2.WY>>entry2.PHIX>> entry2.PHIY>>entry2.K1L>>entry2.K2L; from>>entry3.S>>name_str>>entry3.BETX>>entry3.BETY>>entry3.MUX>>entry3.MUY>>entry3.DX>> entry3.DPX>>entry3.DDX>>entry3.DDPX>>entry3.WX>>entry3.WY>>entry3.PHIX>> entry3.PHIY>>entry3.K1L>>entry3.K2L; name_str.copy(name,name_str.size()); name[16]='\0'; entry2.MUX *=(TMath::Pi()*2.0); entry2.MUY *=(TMath::Pi()*2.0); entry2.PHIX*=(TMath::Pi()*2.0); entry2.PHIY*=(TMath::Pi()*2.0); entry2.K1L=entry1.K1L+entry3.K1L; entry2.K2L=entry1.K2L+entry3.K2L; tree->Fill(); } } from.close(); tree->Show(0); } void plot(){ gStyle->SetMarkerStyle(8); TCut cut1="(K1L*BETX) <-30 || (K1L*BETX) >30"; TCut cut2="(K2L*BETX*DX)<-10 || (K2L*BETX*DX)>10"; TCut cut3="(K1L*BETY) <-100 || (K1L*BETY) >100"; TCut cut4="(K2L*BETY*DX)<-10 || (K2L*BETY*DX)>10"; tree->Scan("name:S:MUX:K1L*BETX" ,cut1,"colsize=11"); cout<Scan("name:S:MUX:K2L*BETX*DX",cut2,"colsize=11"); cout<Scan("name:S:MUY:K1L*BETY" ,cut3,"colsize=11"); cout<Scan("name:S:MUY:K2L*BETY*DX",cut4,"colsize=11"); cout<Divide(2,2); //************************************************************************************************ c1->cd(1); tree->Draw("K2L*BETX*DX","K2L!=0",""); //************************************************************************************************ c1->cd(3); tree->Draw("MUX:K1L*BETX",cut1,"goff"); TGraphPolar *grx=new TGraphPolar(tree->GetSelectedRows(),tree->GetV1(),tree->GetV2()); grx->SetMarkerColor(kRed); grx->Draw("AOP"); gPad->Update(); tree->Draw("MUX:K2L*BETX*DX",cut2,"goff"); TGraphPolar *grsx=new TGraphPolar(tree->GetSelectedRows(),tree->GetV1(),tree->GetV2()); grsx->SetMarkerColor(kBlue); grsx->Draw("OP"); gPad->Update(); grx->GetPolargram()->SetTwoPi(); //************************************************************************************************ c1->cd(2); tree->Draw("K2L*BETY*DX","K2L!=0",""); //************************************************************************************************ c1->cd(4); tree->Draw("MUY:K1L*BETY",cut3,"goff"); TGraphPolar *gry=new TGraphPolar(tree->GetSelectedRows(),tree->GetV1(),tree->GetV2()); gry->SetMarkerColor(kRed); gry->Draw("AP"); gPad->Update(); tree->Draw("MUY:K2L*BETY*DX",cut4,"goff"); TGraphPolar *grsy=new TGraphPolar(tree->GetSelectedRows(),tree->GetV1(),tree->GetV2()); grsy->SetMarkerColor(kBlue); grsy->Draw("P"); gPad->Update(); gry->GetPolargram()->SetTwoPi(); c1->Update(); } void chrom3(){ read(); plot(); }