From 78abca1915f97d029081c7e5d39853e4b5fac85b Mon Sep 17 00:00:00 2001 From: marian Date: Sat, 18 Oct 2008 13:32:35 +0000 Subject: [PATCH] Marian 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 | 6 +- TPC/macros/CalibrateTPC.C | 76 ++++++++++++++++++++---- TPC/macros/ConfigOCDB.C | 49 +++++++++++++-- TPC/macros/RunAliTPCCalibKrTask.C | 92 ++++++++++++++++++++--------- TPC/macros/testTPC/AlienToolkit.cxx | 60 ++++++++++++++++++- 5 files changed, 234 insertions(+), 49 deletions(-) diff --git a/TPC/macros/AliXRDPROOFtoolkit.cxx b/TPC/macros/AliXRDPROOFtoolkit.cxx index 0518735e18f..ab6711f2133 100644 --- a/TPC/macros/AliXRDPROOFtoolkit.cxx +++ b/TPC/macros/AliXRDPROOFtoolkit.cxx @@ -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;iGetEntry(i); diff --git a/TPC/macros/CalibrateTPC.C b/TPC/macros/CalibrateTPC.C index 1afb8dfa7b2..729a103ce38 100644 --- a/TPC/macros/CalibrateTPC.C +++ b/TPC/macros/CalibrateTPC.C @@ -17,14 +17,14 @@ // 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"); + } +} diff --git a/TPC/macros/ConfigOCDB.C b/TPC/macros/ConfigOCDB.C index 4e2682a603c..829885f3fbb 100644 --- a/TPC/macros/ConfigOCDB.C +++ b/TPC/macros/ConfigOCDB.C @@ -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"); + } } diff --git a/TPC/macros/RunAliTPCCalibKrTask.C b/TPC/macros/RunAliTPCCalibKrTask.C index 72e104e1569..815e27c524c 100644 --- a/TPC/macros/RunAliTPCCalibKrTask.C +++ b/TPC/macros/RunAliTPCCalibKrTask.C @@ -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); } diff --git a/TPC/macros/testTPC/AlienToolkit.cxx b/TPC/macros/testTPC/AlienToolkit.cxx index 23b0a80acbf..5f21f6c7e2c 100644 --- a/TPC/macros/testTPC/AlienToolkit.cxx +++ b/TPC/macros/testTPC/AlienToolkit.cxx @@ -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; iString().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 "<DirName(dname.Data())<String().Data()<<" "<String().Data()<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; iclose(); + 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"<DirName(dname.Data())<DirName(dname.Data())<String().Data()<<" "<DirName(dname.Data())<BaseName(dname.Data())<close(); //gSystem->Exec("aliensh file:stage.txt"); -- 2.39.3