Marian
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Oct 2008 13:32:35 +0000 (13:32 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Oct 2008 13:32:35 +0000 (13:32 +0000)
AlienToolkit.cxx           - Adding PrintPFN
RunAliTPCCalibKrTask.C     - Adding description how to use the Analysis
AliXRDPROOFtoolkit.cxx     - Adding new option for checkeing files consistency
CalibrateTPC.C             - Example - merging from files by hand
ConfigOCDB.C               - Example - enable Alien on PROOF

TPC/macros/AliXRDPROOFtoolkit.cxx
TPC/macros/CalibrateTPC.C
TPC/macros/ConfigOCDB.C
TPC/macros/RunAliTPCCalibKrTask.C
TPC/macros/testTPC/AlienToolkit.cxx

index 0518735..ab6711f 100644 (file)
@@ -67,7 +67,7 @@ AliXRDPROOFtoolkit::AliXRDPROOFtoolkit () : TObject ()
   //
   // Default  -GSI specific setup
   //
-  for(Int_t i=255;i<269;i++)
+  for(Int_t i=255;i<300;i++)
   //for(Int_t i=259;i<260;i++)
     listeMachine.push_back(new TString(Form("lxb%d.gsi.de", i)));
   fUserGroup = gSystem->GetUserInfo();
@@ -605,9 +605,11 @@ Int_t  AliXRDPROOFtoolkit::CheckTreeInFile(const char*fileName,const char*treeNa
     if (!branch) {file->Close(); delete file; return -4;}
   }
   //
+  if (debugLevel==1 &&  tree->GetEntries()==0 ) return 1; //empty 
+
   tree->SetBranchStatus("*",1);
   try {
-    if (debugLevel>0){
+    if (debugLevel>1){
       Int_t entries = tree->GetEntries();
       for (Int_t i=0;i<entries; i++){
        if (branch) branch->GetEntry(i);
index 1afb8df..729a103 100644 (file)
   // Setup analysis manager
   //
   .L $ALICE_ROOT/TPC/macros/CalibrateTPC.C
-  AliAnalysisManager * mgr = SetupCalibTask();
+  AliAnalysisManager * mgr = SetupCalibTask("/V6/");
   //
   // Process data - chain
   //
   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
   AliXRDPROOFtoolkit tool; 
-  TChain * chain = tool.MakeChain("esd.txt","esdTree",0,50000);
+  TChain * chain = tool.MakeChain("esd.txt","esdTree",0,100);
   chain->Lookup();
   // memory
   mgr->SetNSysInfo(100); 
@@ -45,7 +45,7 @@
 */
 
 
-AliAnalysisManager * SetupCalibTask() {
+AliAnalysisManager * SetupCalibTask(char * prefix ="/V12/") {
   //
   //
   //
@@ -57,11 +57,18 @@ AliAnalysisManager * SetupCalibTask() {
   AliTracker::SetFieldMap(field,0);
   TGeoManager::Import("/u/miranov/proof/geometry.root");
   //
-  TFile f("/u/miranov/calibKr.root");
-  AliTPCCalPad *gainMap = f.Get("spectrMean");
-  gainMap->Multiply(1/gainMap->GetMedian());
+  TFile f("/u/miranov/GainMap.root");
+  AliTPCCalPad *gainMap = f.Get("GainMap");
+  //
+  // OCDB setup
+  //
+  AliCDBManager::Instance()->SetRun(1);
+  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
+  AliTPCcalibDB::Instance()->SetExBField(0);
+  AliTPCClusterParam * param = AliTPCcalibDB::Instance()->GetClusterParam();
+  AliTPCClusterParam::SetInstance(param);
+  AliTPCcalibDB::Instance()->SetExBField(0);
   //
-
 
 
   //
@@ -78,15 +85,23 @@ AliAnalysisManager * SetupCalibTask() {
 
   AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("TPC calibration task");
   
-  AliTPCcalibTracksCuts *cuts = new AliTPCcalibTracksCuts(20, 0.4, 0.5, 0.13, 0.018);
+  AliTPCcalibTracksCuts *cuts = new AliTPCcalibTracksCuts(40, 0.4, 0.5, 0.13, 0.018);
 
   //
   AliTPCcalibTracks *calibTracks =  new AliTPCcalibTracks("calibTracks", "Resolution calibration object for tracks", clusterParam, cuts); 
+
+
   AliTPCcalibTracksGain *calibTracksGain =  new AliTPCcalibTracksGain("calibTracksGain","Gain calibration using tracks",cuts); 
   AliTPCcalibAlign *calibAlign = new AliTPCcalibAlign("alignTPC","Alignment of the TPC sectors");
   AliTPCcalibLaser *calibLaser = new AliTPCcalibLaser("laserTPC","laserTPC");
   AliTPCcalibCosmic *calibCosmic = new AliTPCcalibCosmic("cosmicTPC","cosmicTPC");
+  AliTPCcalibCalib *calibCalib = new AliTPCcalibCalib("calibTPC","calibTPC");
+  TTimeStamp startTime(2008,9,0,0,0,0);
+  TTimeStamp stopTime(2008,11,0,0,0,0);
+  AliTPCcalibTime *calibTime = new AliTPCcalibTime("cosmicTime","cosmicTime",0, startTime.GetSec(), stopTime.GetSec(), 5*60, 5*60);
+
   calibCosmic->SetGainMap(gainMap);
+  calibTracksGain->SetGainMap(gainMap);
   //
   calibTracks->SetDebugLevel(20);
   calibTracks->SetStreamLevel(20);
@@ -95,23 +110,31 @@ AliAnalysisManager * SetupCalibTask() {
   calibAlign->SetDebugLevel(20);
   calibAlign->SetStreamLevel(10);
   calibLaser->SetDebugLevel(20);
-  calibLaser->SetStreamLevel(0);
+  calibLaser->SetStreamLevel(20);
   calibCosmic->SetDebugLevel(20);
   calibCosmic->SetStreamLevel(2);
+  calibCalib->SetDebugLevel(20);
+  calibCalib->SetStreamLevel(10);
 
   //
  // ---*---*-----*-*-----*----------*---
   // ADD CALIB JOBS HERE!!!!!!!!!!!!!!!!
+  task1->AddJob(calibCalib);
   task1->AddJob(calibAlign);
-  //task1->AddJob(calibLaser);
+  task1->AddJob(calibLaser);
   task1->AddJob(calibCosmic);
+  task1->AddJob(calibTime);
+
   task1->AddJob(calibTracksGain);
   task1->AddJob(calibTracks);
-  //  task1->AddJob(new AliTPCcalibBase);
   // task1->AddJob(new AliTPCcalibV0);
   // -*----*----*---*-*------*-------**--
   // -------*--*---------*-----*-------*-
-  task1->SetDebugOuputhPath("/lustre_alpha/alice/miranov/rec/production/test2/V0/");
+  TString path=gSystem->pwd();
+  path+=prefix;
+  gSystem->mkdir(path);
+  task1->SetDebugOuputhPath(path.Data());
+
   mgr->AddTask(task1);
 
   AliAnalysisDataContainer *cinput1
@@ -121,9 +144,13 @@ AliAnalysisManager * SetupCalibTask() {
     =mgr->CreateContainer("TPCCalib",TObjArray::Class(),
                          AliAnalysisManager::kOutputContainer,
                          "CalibObjects.root");
-
+  
+  coutput1->SetSpecialOutput(kTRUE);
+  //coutput1->SetFileName("CalibObjectFile.root");
   mgr->ConnectInput(task1,0,cinput1);
   mgr->ConnectOutput(task1,0,coutput1);
+  //
+  //mgr->SetSpecialOutputLocation(path->Data());
 
   if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus(); 
@@ -132,3 +159,26 @@ AliAnalysisManager * SetupCalibTask() {
   stopwatch.Print();
   return mgr;
 }
+
+
+void Merge(){
+  fstream finput;
+  TString currentFile("");
+  finput.open("mergelist.txt", ios_base::in);
+  TFileMerger merger;
+  merger.OutputFile("result.root");  
+  finput >> currentFile;
+  merger->AddFile(currentFile->Data());
+  merger.Merge();
+  TFile::Cp("result.root","last.root");
+  //
+  while(finput.good()) {
+    TFileMerger  merger2;
+    merger2.OutputFile("result.root");
+    finput >> currentFile;    
+    merger2.AddFile("last.root");
+    merger2.AddFile(currentFile->Data());    
+    merger2.Merge(); 
+    TFile::Cp("result.root","last.root");
+  }
+}
index 4e2682a..829885f 100644 (file)
@@ -6,12 +6,13 @@
 //
 
 
+
 void ConfigOCDB(){
-  //
   // 
   //
   // import geometry
   //
+
   printf("SETUP OCBD for PROOF\n");
   TGeoManager::Import("/u/miranov/proof/geometry.root");
   AliGeomManager::LoadGeometry("/u/miranov/proof/geometry.root");
@@ -24,17 +25,55 @@ void ConfigOCDB(){
   //
   //
   //
-  AliCDBManager::Instance()->SetRun(1);
   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
-  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT/TPC/Calib/Parameters");
+  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT");
+  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/ClusterParam","local://$ALICE_ROOT");
+  AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
+  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
+  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
+
+  AliCDBManager::Instance()->SetRun(1);
 
-  AliTPCClusterParam * param = AliTPCcalibDB::Instance()->GetClusterParam();
-  AliTPCClusterParam::SetInstance(param);
+  AliTPCClusterParam * paramCl = AliTPCcalibDB::Instance()->GetClusterParam(); 
+  AliTPCParam   * paramTPC = AliTPCcalibDB::Instance()->GetParameters();
+  AliTPCClusterParam::SetInstance(paramCl);
+  //paramTPC->Dump();
+  
   AliTPCcalibDB::Instance()->SetExBField(0);
   //
   //
   //
   printf("END of SETUP OCBD for PROOF\n");
+}
 
 
+void ConfigAlien(){
+  //
+  // Setup-activate alien
+  //
+
+  //myvar=342
+  //while [ $myvar -ne 360 ] ; do  echo enable alien on lxb$myvar; lsrun -m lxb$myvar  /u/miranov/.aliensetup;  myvar=$(( $myvar + 1 )) ; echo $myvar ; done 
+  gSystem->Exec("/u/miranov/.aliensetup >setup.log"); 
+  //ifstream in;
+  //in.open("path.txt");
+  
+  TString envString;
+  
+  gSystem->Setenv("LD_LIBRARY_PATH",envString.Data());
+  gSystem->Setenv("GBBOX_ENVFILE","/tmp/xxxxxxx");
+  printf("LOAD LIBRARIES start\n\n\n");
+  gSystem->Load("libANALYSIS.so");
+  gSystem->Load("libSTAT.so");
+  gSystem->Load("libTPCcalib.so");
+  //
+  gSystem->Load("libXrdClient.so");
+  gSystem->Load("libNetx.so");
+  printf("LOAD LIBRARIES end\n\n\n");
+  TGrid * alien = TGrid::Connect("alien://",0,0,"t");
+  if (alien) {
+    printf("Alien activated\n");
+  }else{
+    printf("Alien not activated\n");
+  }
 }
index 72e104e..815e27c 100644 (file)
@@ -1,12 +1,56 @@
-
 /*
+  Example usage:
+
+  0. Load neccessary libraries
+  
   gSystem->Load("libANALYSIS");
   gSystem->Load("libANALYSISalice");
   gSystem->Load("libTPCcalib");
-  //..
+  gSystem->Load("libXrdClient.so");
+  gSystem->Load("libNetx.so");
+  TGrid::Connect("alien://",0,0,"t");
+  gSystem->Load("$ROOTSYS/lib/libXrdClient.so");
+  //
+  // 1. Make list of the files 
+  //
+  .L $ALICE_ROOT/TPC/macros/testTPC/AlienToolkit.cxx+
+  gSystem->Load("libXrdClient.so");
+  gSystem->Load("libNetx.so");
+  AlienToolkit toolkit;
+  char *path = "/alice/cern.ch/user/a/amatyja/alice/data/"
+  toolkit.MakeCollection(path,"32129*Krypton.root");
+  toolkit.MakeCollection(path,"32231*Krypton.root");
+  toolkit.MakeCollection(path,"32284*Krypton.root");
+  toolkit.PrintPFN(); > list.txt
+
+  //
+  // 2. Initialization of proof
+  //
+  TProofMgr * proofmgr = TProof::Mgr("lxgrid5.gsi.de");
+  TProof * proof = proofmgr->CreateSession();
+  proof->SetParameter("PROOF_MaxSlavesPerNode", (Long_t)1000);
+  .L /u/miranov/macros/ProofEnableAliRoot.C
+  ProofEnableAliRoot("/usr/local/grid/AliRoot/HEAD0108");
+  gProof->Exec("gSystem->Load(\"libANALYSIS.so\")",kTRUE);
+  gProof->Exec("gSystem->Load(\"libSTAT.so\")",kTRUE);
+  gProof->Exec("gSystem->Load(\"libTPCcalib.so\")",kTRUE);
+
   //
+  // 3 Run analysis on PROOF
   //
+  //
+  // Create chain of input files
+  //
+  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
+  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
+  .L $ALICE_ROOT/TPC/macros/RunAliTPCCalibKrTask.C
+  RunAliTPCCalibKrTask(kTRUE);
+  
   
+  //..
+  //
+  //
+
   //Example usage 
   TFile f("KrHisto.root");
   AliTPCCalibKr *kr = f.Get("AliTPCCalibKr");
@@ -25,33 +69,18 @@ TTree * tree = viewer->GetViewer()->GetTree();
 
 tree->SetAlias("cutAll","abs(fitNormChi2.fElements-2.)<1.8&&entries.fElements/entries_Median.fElements<4&&entries.fElements/entries_Median.fElements>0.4&&fitRMS.fElements/fitMean.fElements<0.09&&fitRMS.fElements/fitMean.fElements>0.02")
 
+*/
 
+TChain * chain = 0;
 
- */
-
-
-void RunAliTPCCalibKrTask(const char* list="KrClusters_250508.txt",Bool_t bProof = kFALSE)
+void RunAliTPCCalibKrTask(Bool_t bProof = kFALSE)
 {
-
-  if(bProof) {
-    TProof *proof = TProof::Open("jacek@gsiaf.gsi.de");
-    gProof->GetManager()->SetROOTVersion("5.18/00a");
-
-    // Proof Enable Libraries
-    gROOT->LoadMacro("ProofEnableAliRoot.C");
-    ProofEnableAliRoot("/d/alice11/jacek/alice/x86_64/AliRoot/HEAD");
-  }
-
-  //
-  // Create chain of input files
   //
-  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
-  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx++");
-  AliXRDPROOFtoolkit tool;
-
-  // -- Make chain of files
-  TChain * chain = tool.MakeChain(list,"Kr","",2,0);
-  chain->SetBranchStatus("Cl.fCluster",kFALSE);
+  AliXRDPROOFtoolkit tool;  
+  chain = tool.MakeChain("list.txt","Kr","",20000,0);
+  chain->Lookup();
+  chain->SetBranchStatus("Cl.fCluster",kFALSE);  
+  
   //
   // Create the analysis manager
   //
@@ -74,11 +103,18 @@ void RunAliTPCCalibKrTask(const char* list="KrClusters_250508.txt",Bool_t bProof
   // Attach output
   cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer,"outHistFile.root");
   mgr->ConnectOutput(task, 0, cOutput);
-
+  //
+  cOutput->SetSpecialOutput(kTRUE);
+  cOutput->SetFileName("CalibObjectFile.root");
+  //
   // Run analysis
-  mgr->InitAnalysis();
+  if (!mgr->InitAnalysis()) return;
   mgr->PrintStatus();
-  if(bProof) mgr->StartAnalysis("proof", chain);
+  mgr->SetDebugLevel(1);
+  
+  if(bProof) {
+    mgr->StartAnalysis("proof", chain);
+  }
   else mgr->StartAnalysis("local", chain);
 }
 
index 23b0a80..5f21f6c 100644 (file)
@@ -32,7 +32,7 @@
   gSystem->Load("libNetx.so");
   //Raw data example
   char *mask = "20225";
-  char *path = "/alice/data/2008/"
+  char *path = "/alice/data/2008/LHC08d"
 
   .L $ALICE_ROOT/TPC/macros/testTPC/AlienToolkit.cxx+
   //
@@ -54,7 +54,10 @@ public:
   void             StageCastor();
   void             LocalCopy(const char* destination);
   void             RemoteCopy(const char* destination="root://gsiaf.gsi.de:1094/", Int_t maxfiles=20);
+  void             RemoteCopyAlien(const char* destination="root://gsiaf.gsi.de:1094/", Int_t maxfiles=20);
+
   void             PrintPFN();
+  void             PrintLFN();
   void             MakeJobList(const  char * outname, const char *outputPrefix,  const char *action, const char *suffix);
   static Bool_t    IsDir(const char * name);
   static Bool_t    IsFile(const char * name);
@@ -239,6 +242,22 @@ void              AlienToolkit::PrintPFN(){
   }
 }
 
+void              AlienToolkit::PrintLFN(){
+  //
+  //
+  // 
+  Int_t entries = fInfoArray.GetEntries();
+  for (Int_t i=0; i<entries;i++){
+    TMap &map = *((TMap*)fInfoArray.At(i));
+    TObjString *lfn = (TObjString*)map("alienLFN");
+    TObjString *pfn = (TObjString*)map("alienSURL");
+    if (!lfn) continue;
+    if (!pfn) continue;
+    printf("%s\n",lfn->String().Data());
+  }
+}
+
+
 void   AlienToolkit::MakeJobList(const  char * outname, const char *outputPrefix, const char *action, const char *suffix){
   //
   //
@@ -297,6 +316,45 @@ void AlienToolkit::RemoteCopy(const char *destination,Int_t maxfiles){
     
     (*aout)<< "mkdirhier "<<gSystem->DirName(dname.Data())<<endl;
     (*aout)<<"xrdcp -d 1 "<<pfn->String().Data()<<" "<<dname.Data()<<endl;
+    if (dnames.Contains(".zip")){
+      (*aout)<<"unzip "<<pfn->String().Data()<<endl;
+    }
+  }
+  aout->close();
+  //gSystem->Exec("aliensh file:stage.txt");
+}
+
+void AlienToolkit::RemoteCopyAlien(const char *destination,Int_t maxfiles){
+  //
+  // Copy selected files to the destination directory
+  // the LFN path name translated to the directory name replacing
+  // separtor - the flat structure is created 
+  Int_t entries = fInfoArray.GetEntries();
+  ofstream *aout=0;
+  for (Int_t i=0; i<entries;i++){
+    if (i%maxfiles==0){
+      if (aout) aout->close();
+      aout = new ofstream(Form("stage_%d.sh",i/maxfiles));
+      (*aout)<<"!/bin/bash\n";
+      (*aout)<<"source ~/.balice\n";
+      (*aout)<<"source ~/.aliensetup\n";      
+    }
+    TMap &map = *((TMap*)fInfoArray.At(i));
+    TObjString *pfn = (TObjString*)map("alienSURL");
+    TObjString *lfn = (TObjString*)map("alienLFN");
+    if (!pfn) continue;
+    if (!lfn) continue;
+    TString dnames=lfn->String().Data();
+    TString dname=destination;
+    dname+=dnames;
+    (*aout)<< " echo Copy"<<gSystem->DirName(dname.Data())<<endl;
+    (*aout)<< "mkdirhier "<<gSystem->DirName(dname.Data())<<endl;
+    (*aout)<<"alien_cp  alien://"<<lfn->String().Data()<<" "<<dname.Data()<<endl;
+    if (dnames.Contains(".zip")){
+      (*aout)<< "cd  "<<gSystem->DirName(dname.Data())<<endl;
+      (*aout)<<"unzip "<<gSystem->BaseName(dname.Data())<<endl;
+    }
   }
   aout->close();
   //gSystem->Exec("aliensh file:stage.txt");