]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliTagAnalysis.cxx
AddTimeStamp was always increasing track length but accounting
[u/mrichter/AliRoot.git] / ANALYSIS / AliTagAnalysis.cxx
index ecadf55ddbbc49fddb34bc21b739221116e7aaa7..77bd1081ac493549e1c67537feea4d490b8381d2 100644 (file)
@@ -118,7 +118,7 @@ void AliTagAnalysis::ChainLocalTags(const char *dirname) {
   const char * name = 0x0;
   // Add all files matching *pattern* to the chain
   while((name = gSystem->GetDirEntry(dirp))) {
-    if (strstr(name,tagPattern)) { 
+    if (tagPattern && strstr(name,tagPattern)) { 
       fTagFilename = fTagDirName;
       fTagFilename += "/";
       fTagFilename += name;
@@ -138,7 +138,7 @@ void AliTagAnalysis::ChainLocalTags(const char *dirname) {
 //___________________________________________________________________________
 TChain * AliTagAnalysis::ChainGridTags(TGridResult *res) {
   //Loops overs the entries of the TGridResult
-  //Chains the tags that are stored in the GRID
+   //Chains the tags that are stored in the GRID
   ftagresult = res;
   Int_t nEntries = ftagresult->GetEntries();
  
@@ -165,13 +165,9 @@ TChain *AliTagAnalysis::QueryTags(AliRunTagCuts *runTagCuts,
   //and returns a TChain along with the associated TEventList
   AliInfo(Form("Querying the tags........"));
 
-  Bool_t aod = kFALSE;
   TString aliceFile;
   if(fAnalysisType == "ESD") aliceFile = "esdTree";
-  else if(fAnalysisType == "AOD") {
-      aliceFile = "aodTree";
-      aod = kTRUE;
-  }
+  else if(fAnalysisType == "AOD") aliceFile = "aodTree";
   else AliFatal("Only ESD and AOD type is implemented!!!");
 
   //ESD file chain
@@ -181,66 +177,64 @@ TChain *AliTagAnalysis::QueryTags(AliRunTagCuts *runTagCuts,
   
   //Defining tag objects
   AliRunTag   *tag     = new AliRunTag;
-  AliEventTag *evTag   = new AliEventTag;
+  //  AliEventTag *evTag   = 0x0;
+  AliFileTag  *flTag   = 0x0;
+
   fChain->SetBranchAddress("AliTAG",&tag);
 
   TString guid;
   TString turl;
   TString path;
 
-  TTree*      cTree     = 0; 
   TEntryList* localList = new TEntryList();
 
   Int_t iAccepted = 0;
-  Int_t iev       = 0;
-  Int_t ientry    = 0;
-  Int_t cEntries  = 0;
   
-  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
-    fChain->GetEntry(iTagFiles);
-    TTree* tree = fChain->GetTree();
-    if (cTree != tree) {
-       // Fix for aod tags: for each tree in the chain, merge the entries
-       cTree    = tree;
-       cEntries = tree->GetEntries();
-       iev      = 0;
-       ientry   = 0;
-    }
+  for(Int_t iEntry = 0; iEntry < fChain->GetEntries(); iEntry++) {
+    fChain->GetEntry(iEntry);
+    evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());
 
     if(runTagCuts->IsAccepted(tag)) {
       if(lhcTagCuts->IsAccepted(tag->GetLHCTag())) {
        if(detTagCuts->IsAccepted(tag->GetDetectorTags())) {
-         if ((iev == 0) || !aod) localList->Reset();
+         localList->Reset();
          Int_t iEvents = tag->GetNEvents();
-         const TClonesArray *tagList = tag->GetEventTags();
-         for(Int_t i = 0; i < iEvents; i++) {
-           evTag = (AliEventTag *) tagList->At(i);
-           guid = evTag->GetGUID(); 
-           turl = evTag->GetTURL(); 
-           path = evTag->GetPath();
-           localList->SetTreeName(aliceFile.Data());
-           if(turl!="") localList->SetFileName(turl.Data());
-           else localList->SetFileName(path.Data());
-
-           if(evTagCuts->IsAccepted(evTag)) {
-               if(aod) localList->Enter(iev);
-               else localList->Enter(i);
-           }
-           iev++;
-         }//event loop
-         if ((ientry == cEntries-1) || !aod) {
-             iAccepted += localList->GetN();
-             if(path != "") esdChain->AddFile(path);
-             else if(turl != "") esdChain->AddFile(turl);
-             fGlobalList->Add(localList);
+         
+         for (int i = 0; i < iEvents; i++) {
+           //      evTag = tag->GetEventTag(i);
+           flTag = tag->GetFileTagForEvent(i);
+           guid = flTag->GetGUID();
+           turl = flTag->GetTURL();
+           path = flTag->GetPath();
+           localList->SetTreeName(aliceFile.Data());
+           if(turl!="") localList->SetFileName(turl.Data());
+           else localList->SetFileName(path.Data());
+
+           if(evTagCuts->IsAccepted(tag->GetEventTag(i))) localList->Enter(i);
          }
+
+//       const TClonesArray *tagList = tag->GetEventTags();
+//       for(Int_t i = 0; i < iEvents; i++) {
+//         evTag = (AliEventTag *) tagList->At(i);
+//         guid = evTag->GetGUID(); 
+//         turl = evTag->GetTURL(); 
+//         path = evTag->GetPath();
+//         localList->SetTreeName(aliceFile.Data());
+//         if(turl!="") localList->SetFileName(turl.Data());
+//         else localList->SetFileName(path.Data());
+           
+//         if(evTagCuts->IsAccepted(evTag)) localList->Enter(i);
+//       }//event loop
+         iAccepted += localList->GetN();
+         if(turl != "")      esdChain->AddFile(turl);
+         else if(path != "") esdChain->AddFile(path);
+         fGlobalList->Add(localList);
        }//detector tag cuts
       }//lhc tag cuts
     }//run tags cut
     tag->Clear();
-    ientry++;
   }//tag file loop
-  AliInfo(Form("Accepted events: %d",iAccepted));
+  AliInfo(Form("Accepted events: %d", iAccepted));
   esdChain->ls();
   esdChain->SetEntryList(fGlobalList,"ne");
   delete tag;
@@ -258,16 +252,13 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut,
   //event tag cuts from the AliEventTagCuts object      
   //and returns a TChain along with the associated TEventList   
   AliInfo(Form("Querying the tags........"));   
-  
-  Bool_t aod = kFALSE;
+
   TString aliceFile;
   if(fAnalysisType == "ESD") aliceFile = "esdTree";
-  else if(fAnalysisType == "AOD") {
-      aliceFile = "aodTree";
-      aod = kTRUE;
-  }
+  else if(fAnalysisType == "AOD") aliceFile = "aodTree";
   else AliFatal("Only ESD and AOD type is implemented!!!");
 
+
   //ESD file chain
   TChain *esdChain = new TChain(aliceFile.Data());
   //global entry list
@@ -275,7 +266,7 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut,
   
   //Defining tag objects        
   AliRunTag   *tag   = new AliRunTag;   
-  AliEventTag *evTag = new AliEventTag;         
+  //  AliEventTag *evTag = 0x0;
   fChain->SetBranchAddress("AliTAG",&tag);      
   
   TString guid;         
@@ -289,12 +280,9 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut,
   
   TEntryList* localList = new TEntryList();
 
-  Int_t iev       = 0;
-  Int_t ientry    = 0;
-  Int_t cEntries  = 0;
-  Int_t current   = -1;         
+  Int_t current = -1; 
   Int_t iAccepted = 0;          
-
+  
   for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
     fChain->GetEntry(iTagFiles);        
     if (current != fChain->GetTreeNumber()) {   
@@ -302,46 +290,37 @@ TChain *AliTagAnalysis::QueryTags(const char *fRunCut,
       fLHCFormula->UpdateFormulaLeaves();       
       fDetectorFormula->UpdateFormulaLeaves();          
       fEventFormula->UpdateFormulaLeaves();     
-      // Fix for aod tags: for each tree in the chain, merge the entries
-      cEntries = (fChain->GetTree())->GetEntries();
-      iev      = 0;
-      ientry   = 0;
-      //
       current = fChain->GetTreeNumber();        
     }   
+    
     if(fRunFormula->EvalInstance(iTagFiles) == 1) {     
       if(fLHCFormula->EvalInstance(iTagFiles) == 1) {   
        if(fDetectorFormula->EvalInstance(iTagFiles) == 1) {
-          if ((iev == 0) || !aod) localList->Reset();   
-         Int_t iEvents = fEventFormula->GetNdata();     
-         const TClonesArray *tagList = tag->GetEventTags();     
-         for(Int_t i = 0; i < iEvents; i++) {   
-           evTag = (AliEventTag *) tagList->At(i);      
-           guid = evTag->GetGUID();     
-           turl = evTag->GetTURL();     
-           path = evTag->GetPath();     
-           localList->SetTreeName(aliceFile.Data());
-           localList->SetFileName(turl.Data());
-           if(fEventFormula->EvalInstance(i) == 1) {
-               if(aod) localList->Enter(iev);
-               else localList->Enter(i);
-           }
-           iev++;
-         }//event loop          
-
-         if ((ientry == cEntries-1) || !aod) {  
-             if(path != "") esdChain->AddFile(path);    
-             else if(turl != "") esdChain->AddFile(turl);       
-             fGlobalList->Add(localList);
-             iAccepted += localList->GetN();
-         }
+          localList->Reset();   
+         //      Int_t iEvents = fEventFormula->GetNdata();     
+         // *** FIXME ***
+
+//       const TClonesArray *tagList = tag->GetEventTags();     
+//       for(Int_t i = 0; i < iEvents; i++) {   
+//         evTag = (AliEventTag *) tagList->At(i);      
+//         guid = evTag->GetGUID();     
+//         turl = evTag->GetTURL();     
+//         path = evTag->GetPath();     
+//         localList->SetTreeName(aliceFile.Data());
+//         localList->SetFileName(turl.Data());
+//         if(fEventFormula->EvalInstance(i) == 1) localList->Enter(i);
+//       }//event loop          
+
+         if(path != "")      esdChain->AddFile(path);   
+         else if(turl != "") esdChain->AddFile(turl);   
+         fGlobalList->Add(localList);
+         iAccepted += localList->GetN();
        }//detector tag cuts
       }//lhc tag cuts
     }//run tag cut      
     tag->Clear();
-    ientry++;
   }//tag file loop      
-  AliInfo(Form("Accepted events: %d",iAccepted));       
+  AliInfo(Form("Accepted events: %d", iAccepted));      
   esdChain->SetEntryList(fGlobalList,"ne");     
 
   delete tag;
@@ -370,10 +349,6 @@ AliTagAnalysis::CreateXMLCollection(const char* name,
     return kFALSE;
   }
   
-  Bool_t aod = kFALSE;
-  if(fAnalysisType == "AOD") aod = kTRUE;
-  
-  
   AliXMLCollection collection;
   collection.SetCollectionName(name);
   collection.WriteHeader();
@@ -382,13 +357,9 @@ AliTagAnalysis::CreateXMLCollection(const char* name,
   TString turl;
   TString lfn;
   
-  TTree*      cTree = 0; 
   TEntryList localList;
   Int_t iAccepted = 0;
-  Int_t iev       = 0;
-  Int_t ientry    = 0;
-  Int_t cEntries  = 0;
-  
+    
   Int_t iRejectedRun = 0;
   Int_t iRejectedLHC = 0;
   Int_t iRejectedDet = 0;
@@ -402,80 +373,95 @@ AliTagAnalysis::CreateXMLCollection(const char* name,
   //Defining tag objects
   AliRunTag* tag = new AliRunTag;
   fChain->SetBranchAddress("AliTAG",&tag);
+
+  Int_t iTagFiles = 0;
   
-  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetListOfFiles()->GetEntries(); ++iTagFiles) 
+  //  AliEventTag *evTag = 0x0;
+  AliFileTag  *flTag = 0x0;
+
+  //  for(Int_t iTagFiles = 0; iTagFiles < fChain->GetListOfFiles()->GetEntries(); ++iTagFiles) 
+  for(Int_t iRunTags = 0; iRunTags < fChain->GetEntries(); ++iRunTags) 
   {
-    fChain->GetEntry(iTagFiles);
-    TTree* tree = fChain->GetTree();
-    if (cTree != tree) {
-      // Fix for aod tags: for each tree in the chain, merge the entries
-      cTree    = tree;
-      cEntries = tree->GetEntries();
-      iev      = 0;
-      ientry   = 0;
-    }
+    fChain->GetEntry(iRunTags);
     //Event list
     iTotalEvents += tag->GetNEvents();
-    if ((iev == 0) || !aod) localList.Reset();
-
+    localList.Reset();
+    
+    evTagCuts->InitializeTriggerClasses(tag->GetActiveTriggerClasses());
+    
     if ( !runTagCuts || ( runTagCuts && runTagCuts->IsAccepted(tag) ) ) 
-    {
-      if ( !lhcTagCuts || ( lhcTagCuts && lhcTagCuts->IsAccepted(tag->GetLHCTag())) ) 
       {
-        if ( !detTagCuts || ( detTagCuts && detTagCuts->IsAccepted(tag->GetDetectorTags())) )
-        {
-          Int_t i(0);
-          TIter next(tag->GetEventTags());
-          AliEventTag* evTag(0x0);
-          iRejectedEvtInFile = 0;
-          iAcceptedEvtInFile = 0;
-          while ( ( evTag = static_cast<AliEventTag*>(next()) ) )
-          {
-            guid = evTag->GetGUID(); 
-            turl = evTag->GetTURL(); 
-            lfn = turl(8,turl.Length());
-            if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(evTag)) )
-            {
-              if (aod) localList.Enter(iev);
-              else localList.Enter(i);
-              iAcceptedEvtInFile++;
-              
-//              AliInfo(Form("Period %5d Orbit# %12d BC %10d (%5d ? in TURL %s) Trigger %s nmus %d",
-//                           evTag->GetPeriodNumber(),
-//                           evTag->GetOrbitNumber(),
-//                           evTag->GetBunchCrossNumber(),
-//                           i,
-//                           evTag->GetTURL(),
-//                           evTag->GetFiredTriggerClasses().Data(),
-//                           evTag->GetNumOfMuons()));              
-            }
-            else 
-            {
-              ++iRejectedEvt;
-              ++iRejectedEvtInFile;
-            }
-            ++i;
-            ++iev;
-          }//event loop
-          if ((ientry == cEntries-1) || !aod) 
-          {
-            iAccepted += localList.GetN();
-            collection.WriteBody(iTagFiles+1,guid,lfn,turl,&localList,iAcceptedEvtInFile,iRejectedEvtInFile);
-          }
-        }//detector tag cuts
-        else {
-          iRejectedDet += tag->GetNEvents();
-        }
-      }//lhc tag cuts 
-      else {
-        iRejectedLHC += tag->GetNEvents();
-      }
-    }//run tag cuts
+       if ( !lhcTagCuts || ( lhcTagCuts && lhcTagCuts->IsAccepted(tag->GetLHCTag())) ) 
+         {
+           if ( !detTagCuts || ( detTagCuts && detTagCuts->IsAccepted(tag->GetDetectorTags())) )
+             {
+               for (int iChunk = 0; iChunk < tag->GetNFiles(); iChunk++, iTagFiles++) 
+                 {
+                   iRejectedEvtInFile = 0;
+                   iAcceptedEvtInFile = 0;
+
+                   localList.Reset();
+                   
+                   flTag = tag->GetFileTag(iChunk);
+                   guid = flTag->GetGUID();
+                   turl = flTag->GetTURL();
+                   lfn = turl(8,turl.Length());
+                   
+                   for (int i = 0; i<flTag->GetNEvents(); i++) 
+                     {
+                       //                      evTag = flTag->GetEventTag(i);
+                       
+                       if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(flTag->GetEventTag(i))) )
+                         {
+                           localList.Enter(i);
+                           iAcceptedEvtInFile++;
+                         }
+                       else 
+                         {
+                           ++iRejectedEvt;
+                           ++iRejectedEvtInFile;
+                         }
+                     }
+                   // *** FIXME ***
+//             Int_t i(0);
+
+//             TIter next(tag->GetEventTags());
+//             AliEventTag* evTag(0x0);
+//             iRejectedEvtInFile = 0;
+//             iAcceptedEvtInFile = 0;
+//             while ( ( evTag = static_cast<AliEventTag*>(next()) ) )
+//               {
+//                 guid = evTag->GetGUID(); 
+//                 turl = evTag->GetTURL(); 
+//                 lfn = turl(8,turl.Length());
+//                 if( !evTagCuts || ( evTagCuts && evTagCuts->IsAccepted(evTag)) )
+//                   {
+//                     localList.Enter(i);
+//                     iAcceptedEvtInFile++;
+//                   }
+//                 else 
+//                   {
+//                     ++iRejectedEvt;
+//                     ++iRejectedEvtInFile;
+//                   }
+//                 ++i;
+//               }//event loop
+                   iAccepted += localList.GetN();
+                   collection.WriteBody(iTagFiles+1,guid,lfn,turl,&localList,iAcceptedEvtInFile,iRejectedEvtInFile);
+                 } // chunk loop
+             }//detector tag cuts
+           else {
+             iRejectedDet += tag->GetNEvents();
+           }
+         }//lhc tag cuts 
+       else {
+         iRejectedLHC += tag->GetNEvents();
+       }
+      }//run tag cuts
     else {
       iRejectedRun += tag->GetNEvents();
     }
     tag->Clear();
-    ++ientry;
   } //tag file loop
   
   collection.WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
@@ -495,8 +481,6 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name,
   //and returns a XML collection
   AliInfo(Form("Creating the collection........"));
 
-  Bool_t aod = kFALSE;
-  if(fAnalysisType == "AOD") aod = kTRUE;
 
   AliXMLCollection *collection = new AliXMLCollection();
   collection->SetCollectionName(name);
@@ -508,9 +492,6 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name,
   TEntryList* localList = new TEntryList();
   
   Int_t iAccepted = 0;
-  Int_t iev       = 0;
-  Int_t ientry    = 0;
-  Int_t cEntries  = 0;
 
   Int_t iRejectedRun = 0;
   Int_t iRejectedLHC = 0;
@@ -524,15 +505,16 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name,
 
   //Defining tag objects
   AliRunTag *tag     = new AliRunTag;
-  AliEventTag *evTag = new AliEventTag;
+  //  AliEventTag *evTag = 0x0;
   fChain->SetBranchAddress("AliTAG",&tag);
 
   TTreeFormula *fRunFormula = new TTreeFormula("fRun",fRunCut,fChain);
   TTreeFormula *fLHCFormula = new TTreeFormula("fLHC",fLHCCut,fChain);          
   TTreeFormula *fDetectorFormula = new TTreeFormula("fDetector",fDetectorCut,fChain);
   TTreeFormula *fEventFormula = new TTreeFormula("fEvent",fEventCut,fChain);
-
+  
   Int_t current = -1;
+
   for(Int_t iTagFiles = 0; iTagFiles < fChain->GetEntries(); iTagFiles++) {
 
     fChain->GetEntry(iTagFiles);
@@ -541,43 +523,39 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name,
       fLHCFormula->UpdateFormulaLeaves();
       fDetectorFormula->UpdateFormulaLeaves();
       fEventFormula->UpdateFormulaLeaves();
-      // Fix for aod tags: for each tree in the chain, merge the entries
-      cEntries = (fChain->GetTree())->GetEntries();
-      iev      = 0;
-      ientry   = 0;
-      //
       current = fChain->GetTreeNumber();
-    }
-    //Event list
+     }
+   //Event list
     iTotalEvents += tag->GetNEvents();
-    if ((iev == 0) || !aod) localList->Reset();
+    localList->Reset();
     if(fRunFormula->EvalInstance(iTagFiles) == 1) {
       if(fLHCFormula->EvalInstance(iTagFiles) == 1) {   
        if(fDetectorFormula->EvalInstance(iTagFiles) == 1) {     
-         Int_t iEvents = fEventFormula->GetNdata();
-         const TClonesArray *tagList = tag->GetEventTags();
-         iRejectedEvtInFile = 0;
-         iAcceptedEvtInFile = 0;
-         for(Int_t i = 0; i < iEvents; i++) {
-           evTag = (AliEventTag *) tagList->At(i);
-           guid = evTag->GetGUID(); 
-           turl = evTag->GetTURL(); 
-           lfn = turl(8,turl.Length());
-           if(fEventFormula->EvalInstance(i) == 1) {
-               if(aod) localList->Enter(iev);
-               else localList->Enter(i);
-               iAcceptedEvtInFile++;
-           }
-           else {
-             iRejectedEvt++;
-             iRejectedEvtInFile++;
-           }
-           iev++;
-         }//event loop
-         if ((ientry == cEntries-1) || !aod) {
-           collection->WriteBody(iTagFiles+1,guid,lfn,turl,localList,iAcceptedEvtInFile, iRejectedEvtInFile);
-           iAccepted += localList->GetN();
-         }
+         //      Int_t iEvents = fEventFormula->GetNdata();
+         // *** FIXME ***
+
+
+//       const TClonesArray *tagList = tag->GetEventTags();
+//       iRejectedEvtInFile = 0;
+//       iAcceptedEvtInFile = 0;
+//       for(Int_t i = 0; i < iEvents; i++) {
+//         evTag = (AliEventTag *) tagList->At(i);
+//         guid = evTag->GetGUID(); 
+//         turl = evTag->GetTURL(); 
+//         lfn = turl(8,turl.Length());
+//         if(fEventFormula->EvalInstance(i) == 1) {
+//           localList->Enter(i);
+//           iAcceptedEvtInFile++;
+//         }
+//         else {
+//           iRejectedEvt++;
+//           iRejectedEvtInFile++;
+//         }
+//       }//event loop
+
+         collection->WriteBody(iTagFiles+1,guid,lfn,turl,localList,iAcceptedEvtInFile, iRejectedEvtInFile);
+         iAccepted += localList->GetN();
        }//detector tag cuts
        else {
          iRejectedDet += tag->GetNEvents();
@@ -590,11 +568,10 @@ Bool_t AliTagAnalysis::CreateXMLCollection(const char* name,
     else {
       iRejectedRun += tag->GetNEvents();
     }
-    ientry++;
   }//tag file loop
   collection->WriteSummary(iTotalEvents, iAccepted, iRejectedRun, iRejectedLHC, iRejectedDet, iRejectedEvt);
   collection->Export();
-
+  
   delete tag;
   return kTRUE;
 }
@@ -619,7 +596,7 @@ TChain *AliTagAnalysis::GetInputChain(const char* system, const char *wn) {
   collection->Reset();
   while (collection->Next()) {
     AliInfo(Form("Adding: %s",collection->GetTURL("")));
-    fAnalysisChain->Add(collection->GetTURL(""));
+    if (fAnalysisChain) fAnalysisChain->Add(collection->GetTURL(""));
     TEntryList *list = (TEntryList *)collection->GetEventList("");
     for(Int_t i = 0; i < list->GetN(); i++) fEventList->Enter(iAccepted+list->GetEntry(i));
 
@@ -627,7 +604,7 @@ TChain *AliTagAnalysis::GetInputChain(const char* system, const char *wn) {
     else if(fsystem == "PbPb") iAccepted += 1;
   }
 
-  fAnalysisChain->SetEventList(fEventList);
+  if (fAnalysisChain) fAnalysisChain->SetEventList(fEventList);
   
   AliInfo(Form("Number of selected events: %d",fEventList->GetN()));
 
@@ -697,27 +674,27 @@ AliTagAnalysis::CreateChainFromCollection(const char* collectionname, const char
  
   char nstr[2000];
 
-  sprintf(nstr, "TotalEvents=%i", iTotalEvents);
+  snprintf(nstr, 2000, "TotalEvents=%i", iTotalEvents);
   TObjString *iTotStr = new TObjString(nstr);
   aUserInfo->Add(iTotStr);
 
-  sprintf(nstr, "AcceptedEvents=%i", iAccepted);
+  snprintf(nstr, 2000, "AcceptedEvents=%i", iAccepted);
   TObjString *iAccStr = new TObjString(nstr);
   aUserInfo->Add(iAccStr);
 
-  sprintf(nstr, "RejectedRun=%i", iRejRun);
+  snprintf(nstr, 2000, "RejectedRun=%i", iRejRun);
   TObjString *iRejRunStr = new TObjString(nstr);
   aUserInfo->Add(iRejRunStr);
 
-  sprintf(nstr, "RejectedLHC=%i", iRejLHC);
+  snprintf(nstr, 2000, "RejectedLHC=%i", iRejLHC);
   TObjString *iRejLHCStr = new TObjString(nstr);
   aUserInfo->Add(iRejLHCStr);
 
-  sprintf(nstr, "RejectedDet=%i", iRejDet);
+  snprintf(nstr, 2000, "RejectedDet=%i", iRejDet);
   TObjString *iRejDetStr = new TObjString(nstr);
   aUserInfo->Add(iRejDetStr);
 
-  sprintf(nstr, "RejectedEvt=%i", iRejEvt);
+  snprintf(nstr, 2000, "RejectedEvt=%i", iRejEvt);
   TObjString *iRejEvtStr = new TObjString(nstr);
   aUserInfo->Add(iRejEvtStr);