void protomcmpulsespedsub(int sample = 0,int channel = 0, int chip = 7,const int runnb = 1,const char *title = "") { char name[100]; int mcm = 0; int peakthr = 600; int peaktype = 0; int peaktime; int nbpeakstype[3]; Char_t iChan; // Channel number Char_t iChip; // Channel number UShort_t iClLength; //number of samples UShort_t iClTime; // Cluster time UInt_t iEventnb; Int_t iSamples[1024]; // Samples TH1F* hPeaktype0[16]; TH1F* hPeaktype1[16]; TH1F* hPeaktype2[16]; TH1F* hPed0[16]; TH1F* hPed1[16]; TH1F* hPed2[16]; TCanvas *c1 = new TCanvas("c1","Single cluster",600,600); sprintf(name, "readout-%i_0.root", runnb); TFile *inFile = new TFile(name); TTree *tree = (TTree*) inFile->Get("tree"); if(!tree) { cerr << "Tree SALTRO events was not found: " << name << "\n"; return; } tree->SetBranchAddress("iEventnb",&iEventnb); tree->SetBranchAddress("iSamples",&iSamples); tree->SetBranchAddress("iChan",&iChan); tree->SetBranchAddress("iChip",&iChip); tree->SetBranchAddress("iClLength",&iClLength); tree->SetBranchAddress("iClTime",&iClTime); Int_t nentries = tree->GetEntries(); printf("ENTRIES %d\n",nentries); for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPeaktype0_%d", j); hPeaktype0[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPeaktype0[j]) delete hPeaktype0[j]; hPeaktype0[j] = new TH1F(name, "",1024,-0.5,1023.5); hPeaktype0[j]->SetMinimum(0); // hPeaktype0[j]->SetMaximum(1024); } for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPeaktype1_%d", j); hPeaktype1[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPeaktype1[j]) delete hPeaktype1[j]; hPeaktype1[j] = new TH1F(name, "",1024,-0.5,1023.5); hPeaktype1[j]->SetMinimum(0); // hPeaktype1[j]->SetMaximum(1024); } for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPeaktype2_%d", j); hPeaktype2[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPeaktype2[j]) delete hPeaktype2[j]; hPeaktype2[j] = new TH1F(name, "",1024,-0.5,1023.5); hPeaktype2[j]->SetMinimum(0); // hPeaktype2[j]->SetMaximum(1024); } for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPed0_%d", j); hPed0[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPed0[j]) delete hPed0[j]; hPed0[j] = new TH1F(name, "",1024,-0.5,1023.5); hPed0[j]->SetMinimum(0); // hPeaktype2[j]->SetMaximum(1024); } for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPed1_%d", j); hPed1[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPed1[j]) delete hPed1[j]; hPed1[j] = new TH1F(name, "",1024,-0.5,1023.5); hPed1[j]->SetMinimum(0); // hPeaktype2[j]->SetMaximum(1024); } for (Int_t j = 0; j < 16; j++) { sprintf(name, "hPed2_%d", j); hPed2[j] = ((TH1F *)(gROOT->FindObject(name))); if (hPed2[j]) delete hPed2[j]; hPed2[j] = new TH1F(name, "",1024,-0.5,1023.5); hPed2[j]->SetMinimum(0); // hPeaktype2[j]->SetMaximum(1024); } gStyle->SetOptStat(1110); nbpeakstype[0] = nbpeakstype[1] = nbpeakstype[2] = 0; for (Int_t j = 0; j < nentries; j++) { tree->GetEntry(j); // if ((iChip == chip) && (iEventnb == eventnb) ) { if (iChip == chip ) { // for(Int_t l = 20; l < iClLength - 20; l++) { for(Int_t l = 0; l < iClLength; l++) { // hPeaktype1[iChan]->SetBinContent(l+1, iSamples[iClLength-l]); if (iChan == 15) { // printf("%2d %4d %4d %4d\n",iChan,l,iClTime - l,iSamples[l]); } } peaktype = 0; peaktime = iClTime - 253; for(Int_t l = 0; l < 12; l++) { // printf("%2d %2d %4d\n",iChan,l,iSamples[iClTime - 253 - 60 * l + sample]); // hPeaktype1[iChan]->Fill(iSamples[iClTime - 253 - 60 * l + sample]); if ( l == 0) { if (iChan == 1) { printf("CH%02d:\n",iChan); for (int p = -2; p < 15; p++) { printf(" %4d",iSamples[peaktime + p]); } printf("\n"); } peaktype = 0; if ((iSamples[peaktime] - iSamples[peaktime+1] > 15) && (iSamples[peaktime] - iSamples[peaktime-1] > 15) && (iSamples[peaktime] > peakthr)) { peaktype = 1; } else if (((abs(iSamples[peaktime] - iSamples[peaktime+1]) < 15) || (abs(iSamples[peaktime] - iSamples[peaktime-1]) < 15)) && (iSamples[peaktime] > peakthr)) { peaktype = 2; } nbpeakstype[peaktype]++; if ((peaktype == 0) && ((iChan & 1) == 1)) printf("PEAKTYPE %d %d %d %d %d %d\n",iChan,peaktype,nbpeakstype[peaktype], iSamples[peaktime-1],iSamples[peaktime],iSamples[peaktime+1]); } // printf("%2d %2d %4d %d %d\n",iChan,l,iSamples[peaktime + sample],peaktype,peaktime); int pedsum = 0; if (peaktype == 0) { for (Int_t p = 5; p <15; p++) { // hPed0[iChan]->Fill(iSamples[peaktime + p]); pedsum += iSamples[peaktime + p]; } pedsum /= 10; hPed0[iChan]->Fill(pedsum); } else if (peaktype == 1) { for (Int_t p = 5; p <15; p++) { //hPed1[iChan]->Fill(iSamples[peaktime + p]); pedsum += iSamples[peaktime + p]; } pedsum /= 10; hPed1[iChan]->Fill(pedsum); } else if (peaktype == 2) { for (Int_t p = 5; p <15; p++) { //hPed2[iChan]->Fill(iSamples[peaktime + p]); pedsum += iSamples[peaktime + p]; } pedsum /= 10; hPed2[iChan]->Fill(pedsum); } if (peaktype == 0) hPeaktype0[iChan]->Fill(iSamples[peaktime] - pedsum); else if (peaktype == 1) hPeaktype1[iChan]->Fill(iSamples[peaktime] - pedsum); else if (peaktype == 2) hPeaktype2[iChan]->Fill(iSamples[peaktime] - pedsum); peaktime -= 60; } // printf("Time%d Length %d\n",iClTime,iClLength); } } printf("PEAKTYPE %d %d %d\n",nbpeakstype[0],nbpeakstype[1],nbpeakstype[2]); for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPeaktype0[j]->SetTitle(name); hPeaktype0[j]->GetYaxis()->SetTitle("Entries"); hPeaktype0[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPeaktype0[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-peaktype0-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-peaktype0-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-peaktype0-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPeaktype1[j]->SetTitle(name); hPeaktype1[j]->GetYaxis()->SetTitle("Entries"); hPeaktype1[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPeaktype1[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-peaktype1-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-peaktype1-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-peaktype1-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPeaktype2[j]->SetTitle(name); hPeaktype2[j]->GetYaxis()->SetTitle("Entries"); hPeaktype2[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPeaktype2[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-peaktype2-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-peaktype2-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-peaktype2-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain ped mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPed0[j]->SetTitle(name); hPed0[j]->GetYaxis()->SetTitle("Entries"); hPed0[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPed0[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-pedestal0-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-pedestal0-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-pedestal0-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain ped mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPed1[j]->SetTitle(name); hPed1[j]->GetYaxis()->SetTitle("Entries"); hPed1[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPed1[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-pedestal1-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-pedestal1-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-pedestal1-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } for (Int_t j = 0; j < 16; j++) { c1->cd(j+1); sprintf(name, "Pulstrain ped mcm%d run%d ch%d %s", mcm,runnb,j ,title); hPed2[j]->SetTitle(name); hPed2[j]->GetYaxis()->SetTitle("Entries"); hPed2[j]->GetXaxis()->SetTitle("ADC value"); // hPeaktype1[j]->SetAxisRange(0, 1023, "X"); //hPeaktype1[j]->SetAxisRange(0, 400, "X"); hPed2[j]->Draw(); if (j == 0) sprintf(name,"protomcm-run%d-pedestal2-%s.pdf(",runnb,title); else if ( j == 15) sprintf(name,"protomcm-run%d-pedestal2-%s.pdf)",runnb,title); else sprintf(name,"protomcm-run%d-pedestal2-%s.pdf",runnb,title); c1->SaveAs(name,"pdf"); } }