/[PAMELA software]/yoda/event/PamelaRun.cpp
ViewVC logotype

Diff of /yoda/event/PamelaRun.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6.1 by kusanagi, Wed Feb 15 15:47:14 2006 UTC revision 6.9 by mocchiut, Mon Oct 16 10:59:12 2006 UTC
# Line 1  Line 1 
1  /** @file  /** @file
2   * $Author: kusanagi $   * $Author: pam-rm2 $
3   * $Date: 2006/02/07 17:11:07 $   * $Date: 2006/08/23 14:39:44 $
4   * $Revision: 6.0 $   * $Revision: 6.8 $
5   *   *
6   * Implementation of the PamelaRun class.   * Implementation of the PamelaRun class.
7   */   */
# Line 30  extern "C" { Line 30  extern "C" {
30  #include "DirectoryStructure.h"  #include "DirectoryStructure.h"
31  }  }
32    
33    extern int GetYODAver();
34    
35  using namespace pamela;  using namespace pamela;
36    
37  static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.PamelaRun"));  static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.PamelaRun"));
# Line 55  std::string PamelaRun::GetRunName(int ru Line 57  std::string PamelaRun::GetRunName(int ru
57   int res;   int res;
58   DIR *dirp;   DIR *dirp;
59   std::string fileName;   std::string fileName;
60   std::string pathDir((char*)getenv("YODA_DATA"));   //std::string pathDir((char*)getenv("YODA_DATA"));
61     std::string pathDir(GetPath());
62   std::string tempName;   std::string tempName;
63   std::string::size_type pos;   std::string::size_type pos;
64    
65   pos = input.find_last_of("/");   pos = input.find_last_of("/");
  //if ((pos == std::string::npos) && !input.empty()) ;//throw Exception("Directories not allowed....");  
66   fileName = input.substr(pos+1);   fileName = input.substr(pos+1);
67   pos = fileName.find_last_of(".");   pos = fileName.find_last_of(".");
68   fileName = fileName.substr(0,pos);   fileName = fileName.substr(0,pos);
69   pathDir = pathDir + "/";   pathDir = pathDir + "/";
70   tempName = pathDir + fileName + "00";   tempName = pathDir + fileName;
71   //oss << pathDir << fileName << std::setw( 2 ) << std::setfill( '0' );   oss.str("");
72   oss.str(tempName.c_str());   oss << Path << "/" << fileName;
73   int i = 0;   UnpackPath = oss.str();
  while (res){  
     //if ((dirp = opendir(tempName.c_str())) == NULL) {  
     if ((dirp = opendir(oss.str().c_str())) == NULL) {  
         res = 0;  
     } else {  
         closedir(dirp);  
         oss.str("");  
         oss << pathDir << fileName << std::setw( 2 ) << std::setfill( '0' ) << ++i;  
         res = 1;  
     }  
  }  
  oss.str("");  
  oss << Path << "/" << fileName << std::setw( 2 ) << std::setfill( '0' ) << i;  
  Path = oss.str();  
74   oss.str("");   oss.str("");
75   oss << fileName << std::setw( 2 ) << std::setfill( '0' ) << i;   oss << fileName;
76   Run = oss.str();   Run = oss.str();
 //return (oss.str());  
77  }  }
78    
79  /**  /**
# Line 132  std::string PamelaRun::GetDirName(Packet Line 119  std::string PamelaRun::GetDirName(Packet
119   */   */
120  std::string PamelaRun::GetFileName(const SubPacket* type, std::string name) {  std::string PamelaRun::GetFileName(const SubPacket* type, std::string name) {
121    if (type->IsDetectorSpecific()) {    if (type->IsDetectorSpecific()) {
122      return Path + "/" + type->GetPacketType()->GetName() + "/"      return UnpackPath + "/" + type->GetPacketType()->GetName() + "/"
123        + Run + "." + type->GetPacketType()->GetName() + "."        + Run + "." + type->GetPacketType()->GetName() + "."
124        + type->GetSubDetector()->GetName() + "."        + type->GetSubDetector()->GetName() + "."
125        + name + ".root";        + name + ".root";
126    } else {    } else {
127      return Path + "/" + type->GetPacketType()->GetName() + "/"      return UnpackPath + "/" + type->GetPacketType()->GetName() + "/"
128        + Run + "." + type->GetPacketType()->GetName() + "."        + Run + "." + type->GetPacketType()->GetName() + "."
129        + name + ".root";        + name + ".root";
130     /*     /*
# Line 464  void PamelaRun::WriteHeaders(Algorithm* Line 451  void PamelaRun::WriteHeaders(Algorithm*
451      WriteHeader(algo, subpacket, PacketType::CalibCalPulse1);      WriteHeader(algo, subpacket, PacketType::CalibCalPulse1);
452      WriteHeader(algo, subpacket, PacketType::CalibCalPulse2);      WriteHeader(algo, subpacket, PacketType::CalibCalPulse2);
453      WriteHeader(algo, subpacket, PacketType::Physics);      WriteHeader(algo, subpacket, PacketType::Physics);
454        WriteHeader(algo, subpacket, PacketType::CalibTrkBoth);
455      WriteHeader(algo, subpacket, PacketType::CalibTrk1);      WriteHeader(algo, subpacket, PacketType::CalibTrk1);
456      WriteHeader(algo, subpacket, PacketType::CalibTrk2);      WriteHeader(algo, subpacket, PacketType::CalibTrk2);
457      WriteHeader(algo, subpacket, PacketType::CalibTof);      WriteHeader(algo, subpacket, PacketType::CalibTof);
# Line 496  void PamelaRun::WriteHeaders(Algorithm* Line 484  void PamelaRun::WriteHeaders(Algorithm*
484      WriteHeader(algo, subpacket, PacketType::S4Init);          WriteHeader(algo, subpacket, PacketType::S4Init);    
485      WriteHeader(algo, subpacket, PacketType::Ac2Init);      WriteHeader(algo, subpacket, PacketType::Ac2Init);
486      WriteHeader(algo, subpacket, PacketType::CalAlarm);          WriteHeader(algo, subpacket, PacketType::CalAlarm);    
487      WriteHeader(algo, subpacket, PacketType::AcAlarm);          WriteHeader(algo, subpacket, PacketType::Ac1Alarm);    
488      WriteHeader(algo, subpacket, PacketType::TrkAlarm);          WriteHeader(algo, subpacket, PacketType::TrkAlarm);    
489      WriteHeader(algo, subpacket, PacketType::TrgAlarm);          WriteHeader(algo, subpacket, PacketType::TrgAlarm);    
490      WriteHeader(algo, subpacket, PacketType::TofAlarm);      WriteHeader(algo, subpacket, PacketType::TofAlarm);
491      WriteHeader(algo, subpacket, PacketType::S4Alarm);      WriteHeader(algo, subpacket, PacketType::S4Alarm);
492        WriteHeader(algo, subpacket, PacketType::Ac2Alarm);    
493      WriteHeader(algo, subpacket, PacketType::TsbT);      WriteHeader(algo, subpacket, PacketType::TsbT);
494      WriteHeader(algo, subpacket, PacketType::TsbB);      WriteHeader(algo, subpacket, PacketType::TsbB);
495  }  }
# Line 517  void PamelaRun::WriteFiles(void) { Line 506  void PamelaRun::WriteFiles(void) {
506      }      }
507    }    }
508    
509      TTree *softinfo = 0;
510      Int_t version=GetYODAver();
511      //Int_t version= 60312;
512      //printf("version = %f \n",version);
513      softinfo = new TTree("SoftInfo","YODA software info");
514      softinfo->Branch("SoftInfo",&version,"version/I");
515      softinfo->Fill();
516    
517    for (TTreeListMap::iterator i = WritingRootTrees.begin();    for (TTreeListMap::iterator i = WritingRootTrees.begin();
518         i != WritingRootTrees.end(); i++) {         i != WritingRootTrees.end(); i++) {
519      for (TTreeList::iterator j = i->second.begin();      for (TTreeList::iterator j = i->second.begin();
# Line 524  void PamelaRun::WriteFiles(void) { Line 521  void PamelaRun::WriteFiles(void) {
521        (*j)->GetCurrentFile()->Write(0,TObject::kOverwrite);        (*j)->GetCurrentFile()->Write(0,TObject::kOverwrite);
522      }      }
523    }    }
524      
525      softinfo->Delete();
526  }  }
527    
528  /**  /**
# Line 556  void PamelaRun::WriteHeader(Algorithm* a Line 555  void PamelaRun::WriteHeader(Algorithm* a
555    
556    std::string FileName = "";    std::string FileName = "";
557    TFile* File = 0;    TFile* File = 0;
558      Long64_t maxsize = 5000000000LL;
559      TTree::SetMaxTreeSize(maxsize);
560    TTree *tree = 0;    TTree *tree = 0;
561    if ( Multiple ){    if ( Multiple ){
562          FileName = GetFileName(&header, GetDefaultBranchName(&header));          FileName = GetFileName(&header, GetDefaultBranchName(&header));
# Line 570  void PamelaRun::WriteHeader(Algorithm* a Line 571  void PamelaRun::WriteHeader(Algorithm* a
571          TTreeMap.insert(RootTreeMap::value_type(type, tree));          TTreeMap.insert(RootTreeMap::value_type(type, tree));
572    } else {    } else {
573          if (!Multiple && (SingleFile == NULL)){          if (!Multiple && (SingleFile == NULL)){
574                  std::string pathDir((char*)getenv("YODA_DATA"));                  //std::string pathDir((char*)getenv("YODA_DATA"));
575                  SingleFile = new TFile((pathDir + "/" + Run + ".root").c_str(), "update");                  SingleFile = new TFile((GetPath() + "/" + Run + ".root").c_str(), "update");
576                  SingleFile->SetCompressionLevel(compression);                  SingleFile->SetCompressionLevel(compression);
577          }          }
578          tree = new TTree(EventType.c_str(), algo->GetAlgorithmName().c_str());          tree = new TTree(EventType.c_str(), algo->GetAlgorithmName().c_str());

Legend:
Removed from v.6.1  
changed lines
  Added in v.6.9

  ViewVC Help
Powered by ViewVC 1.1.23