////////////////////////////////////////////////////////// // This class has been automatically generated on // Sat May 26 12:30:00 2012 by ROOT version 5.27/06 // from TTree MyTree/shower // found on file: noy.root ////////////////////////////////////////////////////////// #ifndef Nanoreader_h #define Nanoreader_h #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class Nanoreader { public : TTree *fChain; //!pointer to the analyzed TTree or TChain Int_t fCurrent; //!current Tree number in a TChain TH2F *hdum1; TH2F *hdum2; TH2F *hdum3; TH2F *hdum4; TH2F *hdummap; TH2F *hpwr; TH2F *hpwr2; TGraph *gDetPos; // Declaration of leaf types Float_t d0_am; Float_t d0_bl0; Float_t d0_sbl0; Float_t d0_af; Float_t d0_bl; Float_t d0_rt; Float_t d0_tm; Float_t d0_tf; Float_t d0_ts; Float_t d0_tdfc; Float_t d0_tot; Float_t d0_qf; Float_t d1_am; Float_t d1_bl0; Float_t d1_sbl0; Float_t d1_af; Float_t d1_bl; Float_t d1_rt; Float_t d1_tm; Float_t d1_tf; Float_t d1_ts; Float_t d1_tdfc; Float_t d1_tot; Float_t d1_qf; Float_t d2_am; Float_t d2_bl0; Float_t d2_sbl0; Float_t d2_af; Float_t d2_bl; Float_t d2_rt; Float_t d2_tm; Float_t d2_tf; Float_t d2_ts; Float_t d2_tdfc; Float_t d2_tot; Float_t d2_qf; Float_t d3_am; Float_t d3_bl0; Float_t d3_sbl0; Float_t d3_af; Float_t d3_bl; Float_t d3_rt; Float_t d3_tm; Float_t d3_tf; Float_t d3_ts; Float_t d3_tdfc; Float_t d3_tot; Float_t d3_qf; Float_t d4_am; Float_t d4_bl0; Float_t d4_sbl0; Float_t d4_af; Float_t d4_bl; Float_t d4_rt; Float_t d4_tm; Float_t d4_tf; Float_t d4_ts; Float_t d4_tdfc; Float_t d4_tot; Float_t d4_qf; Int_t tt_ev; Int_t tt_run; Int_t tt_year; Int_t tt_month; Int_t tt_day; Int_t tt_hour; Int_t tt_min; Int_t tt_sec; Double_t dtt_jd; Double_t dtt_djd; Float_t reca_tinf; Float_t reca_toutf; Float_t reca_pinf; Float_t reca_poutf; Float_t reca_toutm; Float_t reca_poutm; Float_t reca_stoutm; Float_t reca_spoutm; Float_t reca_alphaf; Float_t reca_tinm; Float_t reca_pinm; Float_t reca_alpham; Float_t reca_alpha0; Float_t reca_tzero; Float_t reca_ki2n; Float_t d11_qf; Float_t d11_vem; Float_t d12_qf; Float_t d12_vem; Float_t d21_qf; Float_t d21_vem; Float_t d31_qf; Float_t d31_vem; Float_t d41_qf; Float_t d41_vem; Float_t d51_qf; Float_t d51_vem; Float_t ldf_r[6]; Float_t ldf_Q[6]; Float_t ldf_Chi2; Float_t ldf_Ne; Float_t ldf_ENe; Float_t ldf_core[2]; Float_t ldf_Ecore[2]; Float_t ldf_Ep; Float_t ldf_EEp; // // // List of branches TBranch *b_d0; //! TBranch *b_d1; //! TBranch *b_d2; //! TBranch *b_d3; //! TBranch *b_d4; //! TBranch *b_tt; //! TBranch *b_dtt; //! TBranch *b_reca; //! TBranch *b_d11; //! TBranch *b_d12; //! TBranch *b_d21; //! TBranch *b_d31; //! TBranch *b_d41; //! TBranch *b_d51; //! TBranch *b_ldf; //! Nanoreader(TTree *tree=0); virtual ~Nanoreader(); virtual Int_t Cut(Long64_t entry); virtual Int_t GetEntry(Long64_t entry); virtual Long64_t LoadTree(Long64_t entry); virtual void Init(TTree *tree); virtual Bool_t Notify(); virtual void Show(Long64_t entry = -1); virtual void skyLoop(); virtual void timeLoop(); virtual Double_t GetJulianDay(); virtual void plotHorizon(); virtual void plotHorizonR(); virtual void plotGrid(); virtual void makeKml(Long64_t entry); virtual void getHoriz(int iazdeg, double &azdeg, double &horizelev); virtual void tsLoop(); virtual void makeJson(Long64_t entry); virtual void plotQf(Long64_t entry, bool pdf); virtual void plotallQf(); virtual void plotVEM(Long64_t entry, bool pdf); virtual void plotallVEM(); virtual void Hue2RGB(float hue,float &r,float &g,float &b); virtual void plotCIC(double lamdaAtt); virtual void plotSpectrum(double lamdaAtt); virtual void plotLDF(Long64_t entry, bool pdf); }; #endif #ifdef Nanoreader_cxx Nanoreader::Nanoreader(TTree *tree) { // connect the file // used to generate this class and read the Tree. TFile *f = new TFile("nano_dst.root","READ"); if (!f) { cout << "Nano dst file nano_dst.root not found " << endl; } tree = (TTree*)gDirectory->Get("MyTree"); Init(tree); } Nanoreader::~Nanoreader() { if (!fChain) return; delete fChain->GetCurrentFile(); } Int_t Nanoreader::GetEntry(Long64_t entry) { // Read contents of entry. if (!fChain) return 0; return fChain->GetEntry(entry); } Long64_t Nanoreader::LoadTree(Long64_t entry) { // Set the environment to read one entry if (!fChain) return -5; Long64_t centry = fChain->LoadTree(entry); if (centry < 0) return centry; if (!fChain->InheritsFrom(TChain::Class())) return centry; TChain *chain = (TChain*)fChain; if (chain->GetTreeNumber() != fCurrent) { fCurrent = chain->GetTreeNumber(); Notify(); } return centry; } void Nanoreader::Init(TTree *tree) { // The Init() function is called when the selector needs to initialize // a new tree or chain. Typically here the branch addresses and branch // pointers of the tree will be set. // It is normally not necessary to make changes to the generated // code, but the routine can be extended by the user if needed. // Init() will be called many times when running on PROOF // (once per file to be processed). // Set branch addresses and branch pointers if (!tree) return; fChain = tree; fCurrent = -1; fChain->SetMakeClass(1); fChain->SetBranchAddress("d0", &d0_am, &b_d0); fChain->SetBranchAddress("d1", &d1_am, &b_d1); fChain->SetBranchAddress("d2", &d2_am, &b_d2); fChain->SetBranchAddress("d3", &d3_am, &b_d3); fChain->SetBranchAddress("d4", &d4_am, &b_d4); fChain->SetBranchAddress("tt", &tt_ev, &b_tt); fChain->SetBranchAddress("dtt", &dtt_jd, &b_dtt); fChain->SetBranchAddress("reca", &reca_tinf, &b_reca); fChain->SetBranchAddress("d11", &d11_qf, &b_d11); fChain->SetBranchAddress("d12", &d12_qf, &b_d12); fChain->SetBranchAddress("d21", &d21_qf, &b_d21); fChain->SetBranchAddress("d31", &d31_qf, &b_d31); fChain->SetBranchAddress("d41", &d41_qf, &b_d41); fChain->SetBranchAddress("d51", &d51_qf, &b_d51); fChain->SetBranchAddress("ldf", ldf_r, &b_ldf); Notify(); } Bool_t Nanoreader::Notify() { // The Notify() function is called when a new file is opened. This // can be either for a new TTree in a TChain or when when a new TTree // is started when using PROOF. It is normally not necessary to make changes // to the generated code, but the routine can be extended by the // user if needed. The return value is currently not used. return kTRUE; } void Nanoreader::Show(Long64_t entry) { // Print contents of entry. // If entry is not specified, print current entry if (!fChain) return; fChain->Show(entry); } Int_t Nanoreader::Cut(Long64_t entry) { // This function may be called from Loop. // returns 1 if entry is accepted. // returns -1 otherwise. return 1; } #endif // #ifdef Nanoreader_cxx Double_t Nanoreader::GetJulianDay() { double year = (double)tt_year; double month = (double)tt_month; double day = (double)tt_day; double hour = (double)tt_hour; double min = (double)tt_min; double sec = (double)tt_sec; double ut = hour +((min+sec/60) /60) ; Double_t jd = ut/24 + day + 1721028.5 + 367*year + int(275.*month/9.) -int(1.75 *(year+int( (month+9.)/12.) ) ) -int(0.75 *(int( (year+(month-9.)/7.) /100.) + 1 ) ); return jd ; } void Nanoreader::getHoriz(int iazdeg, double &azdeg, double &horizelev) { const int Nazdeg = 360; // defining arrays and graph for the horizon const Double_t Xazdeg[360]={0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,20.5,21.5,22.5,23.5,24.5,25.5,26.5,27.5,28.5,29.5,30.5,31.5,32.5,33.5,34.5,35.5,36.5,37.5,38.5,39.5,40.5,41.5,42.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,50.5,51.5,52.5,53.5,54.5,55.5,56.5,57.5,58.5,59.5,60.5,61.5,62.5,63.5,64.5,65.5,66.5,67.5,68.5,69.5,70.5,71.5,72.5,73.5,74.5,75.5,76.5,77.5,78.5,79.5,80.5,81.5,82.5,83.5,84.5,85.5,86.5,87.5,88.5,89.5,90.5,91.5,92.5,93.5,94.5,95.5,96.5,97.5,98.5,99.5,100.5,101.5,102.5,103.5,104.5,105.5,106.5,107.5,108.5,109.5,110.5,111.5,112.5,113.5,114.5,115.5,116.5,117.5,118.5,119.5,120.5,121.5,122.5,123.5,124.5,125.5,126.5,127.5,128.5,129.5,130.5,131.5,132.5,133.5,134.5,135.5,136.5,137.5,138.5,139.5,140.5,141.5,142.5,143.5,144.5,145.5,146.5,147.5,148.5,149.5,150.5,151.5,152.5,153.5,154.5,155.5,156.5,157.5,158.5,159.5,160.5,161.5,162.5,163.5,164.5,165.5,166.5,167.5,168.5,169.5,170.5,171.5,172.5,173.5,174.5,175.5,176.5,177.5,178.5,179.5,180.5,181.5,182.5,183.5,184.5,185.5,186.5,187.5,188.5,189.5,190.5,191.5,192.5,193.5,194.5,195.5,196.5,197.5,198.5,199.5,200.5,201.5,202.5,203.5,204.5,205.5,206.5,207.5,208.5,209.5,210.5,211.5,212.5,213.5,214.5,215.5,216.5,217.5,218.5,219.5,220.5,221.5,222.5,223.5,224.5,225.5,226.5,227.5,228.5,229.5,230.5,231.5,232.5,233.5,234.5,235.5,236.5,237.5,238.5,239.5,240.5,241.5,242.5,243.5,244.5,245.5,246.5,247.5,248.5,249.5,250.5,251.5,252.5,253.5,254.5,255.5,256.5,257.5,258.5,259.5,260.5,261.5,262.5,263.5,264.5,265.5,266.5,267.5,268.5,269.5,270.5,271.5,272.5,273.5,274.5,275.5,276.5,277.5,278.5,279.5,280.5,281.5,282.5,283.5,284.5,285.5,286.5,287.5,288.5,289.5,290.5,291.5,292.5,293.5,294.5,295.5,296.5,297.5,298.5,299.5,300.5,301.5,302.5,303.5,304.5,305.5,306.5,307.5,308.5,309.5,310.5,311.5,312.5,313.5,314.5,315.5,316.5,317.5,318.5,319.5,320.5,321.5,322.5,323.5,324.5,325.5,326.5,327.5,328.5,329.5,330.5,331.5,332.5,333.5,334.5,335.5,336.5,337.5,338.5,339.5,340.5,341.5,342.5,343.5,344.5,345.5,346.5,347.5,348.5,349.5,350.5,351.5,352.5,353.5,354.5,355.5,356.5,357.5,358.5,359.5}; const Double_t Yhorizelev[360]={1.6999,1.5999,1.3999,1.19991,1.19991,1.19991,1.09991,0.999908,1.09991,1.09991,1.09991,0.999908,0.999908,0.999908,0.999908,1.09991,0.999908,0.89991,0.699913,0.499916,0.499916,0.399918,0.299919,0.299919,0.199921,0.299919,0.299919,0.299919,0.299919,0.299919,0.299919,0.299919,0.299919,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.399918,0.299919,0.299919,0.299919,0.299919,0.299919,0.299919,0.299919,0.599915,0.699913,0.89991,1.09991,1.3999,1.6999,2.29989,2.59988,2.49989,2.39989,2.49989,2.69988,3.19987,3.99986,4.69985,5.19984,5.69984,5.99983,6.19983,6.69982,6.99982,7.19981,7.39981,7.69981,7.7998,8.1998,8.2998,8.2998,8.89979,9.29978,9.59978,9.89977,9.99977,10.3998,10.3998,10.6998,10.8998,10.8998,10.8998,10.8998,10.8998,10.8998,10.7998,10.7998,10.6998,10.5998,10.4998,10.3998,10.2998,9.99977,9.99977,9.69978,9.59978,9.59978,9.49978,9.49978,9.39978,9.39978,9.19978,9.19978,9.39978,9.89977,10.0998,10.2998,10.4998,10.5998,10.8998,10.8998,10.9998,10.9998,10.9998,10.8998,11.0998,11.0998,11.0998,11.0998,11.1998,11.2998,11.5997,11.5997,11.5997,11.5997,11.5997,11.5997,11.5997,11.4997,11.3997,11.1998,10.9998,10.8998,10.5998,10.5998,10.4998,10.4998,10.4998,10.4998,10.4998,10.4998,10.3998,10.4998,10.3998,10.3998,10.3998,10.5998,10.6998,10.6998,10.3998,10.4998,10.5998,10.4998,10.1998,9.79977,9.59978,9.49978,9.19978,9.09978,9.09978,8.89979,8.69979,8.59979,8.3998,8.2998,8.0998,7.8998,7.7998,7.7998,7.69981,7.59981,7.19981,6.89982,6.59982,6.29983,5.69984,5.59984,5.49984,5.29984,5.19984,4.99985,4.79985,4.59985,4.29986,3.69987,3.29987,2.99988,2.89988,2.79988,2.79988,2.69988,2.59988,2.49989,2.59988,2.69988,2.89988,2.79988,2.79988,2.79988,2.79988,2.79988,2.79988,2.69988,2.69988,2.69988,2.69988,2.69988,2.59988,2.49989,2.49989,2.29989,2.19989,2.19989,2.09989,2.09989,1.99989,1.89989,1.7999,1.6999,1.5999,1.4999,1.4999,1.3999,1.3999,1.5999,1.6999,1.7999,1.7999,1.89989,1.99989,1.99989,1.99989,1.99989,1.99989,1.89989,1.6999,1.5999,1.5999,1.5999,1.4999,1.2999,1.19991,1.19991,1.2999,1.3999,1.3999,1.3999,1.3999,1.2999,1.2999,1.3999,1.3999,1.3999,1.3999,1.2999,1.5999,1.89989,2.09989,2.29989,2.59988,2.69988,2.99988,3.19987,3.09988,3.09988,2.99988,3.09988,2.99988,2.89988,2.79988,2.69988,2.49989,2.39989,2.39989,2.39989,2.49989,2.59988,2.69988,2.59988,2.69988,2.59988,2.69988,2.59988,2.59988,2.49989,2.59988,2.69988,2.69988,2.69988,2.69988,2.69988,2.79988,2.79988,2.79988,2.69988,2.79988,2.89988,3.19987,3.19987,3.19987,3.29987,3.19987,3.29987,3.29987,3.19987,3.19987,3.19987,3.19987,3.29987,3.29987,3.29987,3.19987,3.19987,3.19987,2.99988,3.09988,2.89988,2.89988,2.59988,2.69988,2.69988,2.79988,2.79988,2.79988,2.89988,2.79988,2.79988,2.69988,2.49989,2.49989,2.39989,2.19989,2.19989,2.19989,1.89989,1.7999,1.7999,1.99989,1.89989,1.89989,1.99989,1.89989,1.89989,1.7999,1.6999,1.6999,1.6999,1.7999,1.89989,1.7999,1.5999}; azdeg = Xazdeg[iazdeg]; horizelev = Yhorizelev[iazdeg]; } void Nanoreader::plotHorizon() { const int Nazdeg = 360; const double d2r = TMath::Pi()/180.; const double r2d = TMath::Pi()/180.; Double_t Xazdeggeo[Nazdeg]; Double_t Yhorizen[Nazdeg]; Double_t Xpolhoriz[Nazdeg+363]; Double_t Ypolhoriz[Nazdeg+363]; double azdeg = 0.; double horizelev = 0.; for (int i=0; iSetLineColor(kBlue); gHorizXY->SetFillStyle(3001); gHorizXY->SetFillColor(kBlue); gHorizXY->SetLineWidth(2); gHorizXY->Draw("F"); gHorizXY->Draw("L"); } void Nanoreader::plotHorizonR() { const int Nazdeg = 360; Double_t Xrechoriz[Nazdeg+4]; Double_t Yrechoriz[Nazdeg+4]; double azdeg = 0.; double horizelev = 0.; for (int i=0; iSetLineColor(kBlue); gHorizRXY->SetFillStyle(3001); gHorizRXY->SetFillColor(kBlue); gHorizRXY->SetLineWidth(2); gHorizRXY->Draw("F"); gHorizRXY->Draw("L"); } void Nanoreader::plotGrid() { const double d2r = TMath::Pi()/180.; const double r2d = TMath::Pi()/180.; TEllipse *ellipse1 = new TEllipse(0,0,30,30,0,360,0); ellipse1->Draw("same"); ellipse1->SetFillStyle(0) ; ellipse1->SetLineWidth(1) ; TEllipse *ellipse2 = new TEllipse(0,0,60,60,0,360,0); ellipse2->Draw("same"); ellipse2->SetFillStyle(0) ; ellipse2->SetLineWidth(1) ; TEllipse *ellipse3 = new TEllipse(0,0,90,90,0,360,0); ellipse3->Draw("same"); ellipse3->SetFillStyle(0) ; ellipse3->SetLineWidth(1) ; for(int i=0;i<19;i++){ TLine *l1 = new TLine(90*cos(i*10*d2r),90*sin(i*10*d2r),-90*cos(i*10*d2r),-90*sin(i*10*d2r)); l1->SetLineWidth(1); l1->Draw("same"); } }