790 {
793 printf("EdbEDAShowerTab::CheckBTDensityCanv...\n");
795
796
797
798
800
801
802
804 cout << "EdbEDAShowerTab::CheckBTDensityCanv INFO : eQualityCutSetting==1 || eQualityCutSetting==2 We directly use pvrec_cleaned of the EdbPVRQuality class." << endl;
806 }
807
808
810 cout << "EdbEDAShowerTab::CheckBTDensityCanv ERROR : NULL == pvr Return now." << endl;
811 return;
812 }
813
817
819 Int_t patN= pat->
N();
821 Int_t pvrNMiddle= 0+(pvr->
Npatterns()-1)/2;
823 Float_t BTpermm2;
824
825 printf("EdbEDAShowerTab::Create Histos...\n");
826 TH2F* h_plate = new TH2F("All Plates","h_plate",125,0,125000,100,0,100000);
827 TH2F* BTDens = new TH2F("BTDens","BTDens",125,0,125000,100,0,100000);
828 TH2F* BTDensity[10];
829 TProfile* BTDensProfile = new TProfile("BTDensityProfile","BTDensityProfile",57,0,57,0,200);
830 TProfile* BTDensityProfile[10];
831 TH1F* h_BinContentDistribution = new TH1F("h_BinContentDistribution","h_BinContentDistribution",50,0,50);
832 TH1F* h_BinCont[58];
833
834 for (int l=0; l<10; ++l) {
835 BTDensity[l]=(TH2F*)BTDens->Clone();
836 BTDensityProfile[l]=(TProfile*)BTDensProfile->Clone();
837 BTDensityProfile[l]->SetLineColor(21+2*l);
838 }
839 for (int l=0; l<pvrN; ++l) {
840 h_BinCont[l]=(TH1F*)h_BinContentDistribution->Clone();
841 }
842
843 for (int j=0; j<pvrN; ++j) {
846
847 for (int i=0; i<patN; ++i) {
849 h_plate->Fill(seg->
X(),seg->
Y());
850
851 for (int l=0; l<10; ++l) {
852 float factor=0.15-(float)l*0.01;
853 if (seg->
Chi2()<seg->
W()*factor-1.0) BTDensity[l]->
Fill(seg->
X(),seg->
Y());
854 }
855 }
856
857 for (int ki=1; ki<h_plate->GetNbinsX(); ki++ ) {
858 for (int kj=1; kj<h_plate->GetNbinsY(); kj++ ) {
859 for (int l=0; l<10; ++l) {
860 BTpermm2=(Float_t)BTDensity[l]->GetBinContent(ki,kj);
861 if (BTpermm2==0) continue;
862 BTDensityProfile[l]->Fill(j,BTpermm2,1);
863 if (l==3) h_BinCont[j]->Fill(BTpermm2);
864 }
865 }
866 }
867 for (int l=0; l<10; ++l) {
868 BTDensity[l]->Reset();
869 }
870 }
871
872
873
874 printf("EdbEDAShowerTab::Draw Histos...\n");
875
877 h_plate->Draw("colz");
879 h_BinCont[0]->DrawNormalized();
880 h_BinCont[pvrNMiddle]->SetLineColor(2);
881 h_BinCont[pvrN-1]->SetLineColor(4);
882 h_BinCont[pvrNMiddle]->DrawNormalized("same");
883 h_BinCont[pvrN-1]->DrawNormalized("same");
884 TLegend*
leg=
new TLegend(0.77,0.6,0.98,0.8,
"",
"brNDC");
885 leg->AddEntry(h_BinCont[0],
"First plate",
"LP");
886 leg->AddEntry(h_BinCont[pvrNMiddle],
"Middle plate",
"LP");
887 leg->AddEntry(h_BinCont[pvrN-1],
"Last plate",
"LP");
888 leg->SetBorderSize(1);
891 BTDensityProfile[0]->Draw("profileZ");
892 int xnpat=pvrN+5;
893 BTDensityProfile[0]->GetXaxis()->SetRangeUser(0,xnpat);
894 BTDensityProfile[3]->Draw("profileZsame");
895 BTDensityProfile[9]->Draw("profileZsame");
896 BTDensityProfile[3]->SetLineColor(2);
897 BTDensityProfile[3]->SetLineWidth(2);
898 BTDensityProfile[9]->SetLineColor(6);
899 BTDensityProfile[0]->GetYaxis()->SetRangeUser(0.0,1.2* BTDensityProfile[0]->GetMaximum());
900 TLegend* leg2= new TLegend(0.15,0.75,0.4,0.88,"","brNDC");
901 leg2->AddEntry(BTDensityProfile[0],"Chi2<W*0.15-1","LP");
902 leg2->AddEntry(BTDensityProfile[3],"Chi2<W*0.12-1","LP");
903 leg2->AddEntry(BTDensityProfile[9],"Chi2<W*0.06-1","LP");
904 leg2->SetBorderSize(1);
905 leg2->Draw();
906
907 TLegend* leg3= new TLegend(0.7,0.15,0.98,0.75,"","brNDC");
908 leg3->AddEntry(BTDensityProfile[0],"Chi2<W*0.15-1","LP");
909 leg3->AddEntry(BTDensityProfile[1],"Chi2<W*0.14-1","LP");
910 leg3->AddEntry(BTDensityProfile[2],"Chi2<W*0.13-1","LP");
911 leg3->AddEntry(BTDensityProfile[3],"Chi2<W*0.12-1","LP");
912 leg3->AddEntry(BTDensityProfile[4],"Chi2<W*0.11-1","LP");
913 leg3->AddEntry(BTDensityProfile[5],"Chi2<W*0.10-1","LP");
914 leg3->AddEntry(BTDensityProfile[6],"Chi2<W*0.09-1","LP");
915 leg3->AddEntry(BTDensityProfile[7],"Chi2<W*0.08-1","LP");
916 leg3->AddEntry(BTDensityProfile[8],"Chi2<W*0.07-1","LP");
917 leg3->AddEntry(BTDensityProfile[9],"Chi2<W*0.06-1","LP");
918 leg3->SetBorderSize(1);
919
920
922 BTDensityProfile[0]->Draw("profileZ");
923 BTDensityProfile[0]->GetXaxis()->SetRangeUser(0,xnpat);
924 BTDensityProfile[0]->DrawCopy("profileZsame");
925 for (int l=0; l<10; ++l) {
926 BTDensityProfile[l]->DrawCopy("profileZsame");
927 }
928 leg3->Draw();
930
931
932 printf("EdbEDAShowerTab::Estimate Maximum by constant fit...\n");
933
934 Bool_t warning=kFALSE;
935 Int_t last_l=0;
936 float factor=0.15-(float)last_l*0.01;
937 TString Chi2Cut=Form("s.eChi2<s.eW*%f-1.0",factor);
938
939 for (int l=9; l>=0; --l) {
940 if (BTDensityProfile[l]->GetMaximum()<1) continue;
941 BTDensityProfile[l]->Fit("pol0","Q0");
942 TF1 *myfunc = BTDensityProfile[l]->GetFunction("pol0");
943 if (myfunc->GetParameter(0)>20 && !warning) {
944 warning=kTRUE;
945 last_l=l+1;
946 factor=0.15-(float)last_l*0.01;
947 Chi2Cut=Form("s.eChi2<s.eW*%f-1.0",factor);
948 cout << " WARNING BT DENSITY GREATER THAN 20 !! Appearing after maximum Chi2Cut of : " << Chi2Cut << endl;
949 }
950 }
951 factor=0.15-(float)last_l*0.01;
952 Chi2Cut=Form("s.eChi2<s.eW*%f-1.0",factor);
953 if (warning) {
954 cout << "Maximum Chi2Cut = " << Chi2Cut << endl;
955 }
956 else {
957 cout << "----- No high BT density observed. --------"<<endl;
958 }
959
960 return;
961}
TLegend * leg
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:122
EdbPVRec * pvrec_cleaned
(==generic cleaned)
Definition: EdbEDAShowerTab.h:26
TCanvas * CreateCanvas(char *plot_name)
Definition: EdbEDAShowerTab.h:164
TCanvas * c1
Definition: energy.C:13