#include "MyOwnLoop.h" long double frequency; void MyOwnLoop(TChain *chain, TH1D *h1, TCut cut, int additional_deadtime) { Long64_t TreeEntries=0; Long64_t EntriesTillNow=0; MyInfo *TotalTime; MyInfo *ReadyTime; TFile *LoopFile; TH1D* mean_ped_root; double completeReadyTime=0.; chain->GetEntry(0); Long64_t allEntries=(Long64_t)(chain->GetEntries()); int k=0; while(EntriesTillNow < allEntries ) { chain->GetEntry(EntriesTillNow); TreeEntries=(Long64_t)((TTree*)chain->GetTree())->GetEntries(); if (additional_deadtime) { TotalTime=(MyInfo *)((TTree*) chain->GetTree() )->GetUserInfo()->FindObject("actTotalTime"); stringstream TimeCut; TimeCut<<"GlobalTime>"<GetTree())->Draw("GlobalTime", TimeCut.str().c_str()); // Die Clock-Cycles haben sich im Lauf der Messung geaendert von 1 us zu .1 us, // FREQUENCY -> NEW_FREQUENCY // im main wird die externe Variable Frequency je nach Messung gesetzt // Da die additional_deadtime in us ist, wird sie je nach Messung mit 10 // multipliziert, um auf clock-ticks zu kommen completeReadyTime=completeReadyTime+((double)(TotalTime->data - Events*additional_deadtime*frequency/FREQUENCY))/frequency; } else { ReadyTime=(MyInfo *)((TTree*) chain->GetTree() )->GetUserInfo()->FindObject("actReadyTime"); completeReadyTime=completeReadyTime+(double)ReadyTime->data/frequency; } k++; LoopFile=(TFile*)chain->GetFile(); mean_ped_root=(TH1D*)LoopFile->Get("mean_ped"); double pedestal=0; for(int i=1;i<9;i++) pedestal+=(double)mean_ped_root->GetBinContent(i); stringstream drawcommand; //drawcommand<<"(GetEnergy()-"<>+"<< h1->GetName(); drawcommand<<"(GetEnergy()-"<>+"<< h1->GetName(); chain->Draw(drawcommand.str().c_str(),cut,"",TreeEntries,EntriesTillNow); EntriesTillNow+=TreeEntries; } h1->Scale(1./completeReadyTime); TotalTime=NULL; ReadyTime=NULL; LoopFile=NULL; mean_ped_root=NULL; } void MyEventListLoop(TChain *chain,TEventList *myList, TH1D *h1, TCut cut,unsigned long int firstEvent, unsigned long int lastEvent, unsigned long int globalFirstEvent, long EventListTime,int additional_deadtime) { TFile *LoopFile; TH1D* mean_ped_root; double completeReadyTime=0.; stringstream TimeCut; // if (additional_deadtime) // { TEventList *tempList=new TEventList("tempList"); TimeCut<<"GlobalTime>"<="<>tempList",TimeCut.str().c_str())<GetN(); cout<<"Events in tempList:"<GetEntries(); // Die Clock-Cycles haben sich im Lauf der Messung geaendert von 1 us zu .1 us, // FREQUENCY -> NEW_FREQUENCY // im main wird die externe Variable Frequency je nach Messung gesetzt // Da die additional_deadtime in us ist, wird sie je nach Messung mit 10 // multipliziert, um auf clock-ticks zu kommen completeReadyTime=((double)(EventListTime- Events*additional_deadtime*frequency/FREQUENCY))/frequency; cout<<((double)EventListTime/frequency)<<"->"<SetEventList(0); chain->LoadTree(0); chain->GetEntry(lastEvent-globalFirstEvent); LoopFile=(TFile*)chain->GetFile(); mean_ped_root=(TH1D*)LoopFile->Get("mean_ped"); double pedestal=0; for(int i=1;i<9;i++) pedestal+=(double)mean_ped_root->GetBinContent(i); stringstream drawcommand; drawcommand<<"(GetEnergy()-"<>+"<< h1->GetName(); TCut newCut=cut+TimeCut.str().c_str(); cout<SetEventList(0); chain->SetEventList(myList); cout<<"Drawn:"<Draw(drawcommand.str().c_str(),cut)<SetEventList(0); h1->Scale(1./completeReadyTime); LoopFile=NULL; mean_ped_root=NULL; }