X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ESDCheck%2Fana.C;h=fe20a19b26f367a492b4939302dc4fdecea7e1af;hb=6228ecd43f107d9ae0651ece33daea2d21aba387;hp=7f388cda19b56260e3033a7de0339923ceb9119c;hpb=c52c2132edf0525e05b46ca57d7715be79ddb52c;p=u%2Fmrichter%2FAliRoot.git diff --git a/ESDCheck/ana.C b/ESDCheck/ana.C index 7f388cda19b..fe20a19b26f 100644 --- a/ESDCheck/ana.C +++ b/ESDCheck/ana.C @@ -12,18 +12,28 @@ Bool_t LoadLib( const char* pararchivename) // Setup par File if (pararchivename) { + char parpar[80] ; + sprintf(parpar, "%s.par", pararchivename) ; + if ( gSystem->AccessPathName(parpar) ) { + gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ; char processline[1024]; - sprintf(processline,".! tar xvzf %s.par",pararchivename); + sprintf(processline, ".! make %s", parpar) ; + cout << processline << endl ; + gROOT->ProcessLine(processline) ; + gSystem->ChangeDirectory(cdir) ; + sprintf(processline, ".! mv /tmp/%s .", parpar) ; + gROOT->ProcessLine(processline) ; + sprintf(processline,".! tar xvzf %s",parpar); gROOT->ProcessLine(processline); - gSystem->ChangeDirectory(pararchivename); - + } + gSystem->ChangeDirectory(pararchivename); + // check for BUILD.sh and execute if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) { printf("*** Building PAR archive %s ***\n", pararchivename); if (gSystem->Exec("PROOF-INF/BUILD.sh")) { AliError(Form("Cannot Build the PAR Archive %s! - Abort!", pararchivename) ); - return kFALSE ; } } @@ -36,27 +46,31 @@ Bool_t LoadLib( const char* pararchivename) } if ( strstr(pararchivename, "ESD") ) { - gSystem->Load("libVMC.so"); - gSystem->Load("libESD.so"); - gSystem->Load("libRAliEn.so") ; - gSystem->Load("libProof.so") ; + //gSystem->Load("libVMC.so"); + //gSystem->Load("libRAliEn.so"); + gSystem->Load("libESD.so") ; + //gSystem->Load("libProof.so") ; } - printf("*** %s library loaded *** %s **\n", pararchivename); + if ( strstr(pararchivename, "AnalysisCheck") ) { + gSystem->Load("libSpectrum.so"); + } + + printf("lib%s done\n", pararchivename); gSystem->ChangeDirectory(cdir); gIsAnalysisLoaded = kTRUE ; - return rv ; ; + return rv ; } //______________________________________________________________________ -void ana() -{ +void ana(const Int_t kEvent=100) +{ if (! gIsAnalysisLoaded ) { LoadLib("ESD") ; + LoadLib("AOD") ; LoadLib("ANALYSIS") ; - printf("Include path = %s\n", gSystem->GetIncludePath()) ; LoadLib("AnalysisCheck") ; } @@ -65,50 +79,60 @@ void ana() // definition of analysis tasks - const Int_t knumberOfTasks = 8 ; - AliAnalysisTask * taskList[knumberOfTasks] ; - TClass * taskInputList[knumberOfTasks] ; - TClass * taskOutputList[knumberOfTasks] ; - - taskList[0] = new AliPHOSQATask("PHOS") ; - taskInputList[0] = TChain::Class() ; - taskOutputList[0] = TObjArray::Class() ; - - taskList[1] = new AliEMCALQATask("EMCal") ; - taskInputList[1] = taskInputList[0] ; // only one top input container allowed - taskOutputList[1] = TObjArray::Class() ; - - taskList[2] = new AliPMDQATask("PMD") ; - taskInputList[2] = taskInputList[0] ; // only one top input container allowed - taskOutputList[2] = TObjArray::Class() ; - - taskList[3] = new AliAnalysisTaskPt("Pt") ; - taskInputList[3] = taskInputList[0] ; // only one top input container allowed - taskOutputList[3] = TObjArray::Class() ; - - taskList[4] = new AliHMPIDQATask("HMPID") ; - taskInputList[4] = taskInputList[0] ; // only one top input container allowed - taskOutputList[4] = TObjArray::Class() ; + + AliPHOSQATask * phos = new AliPHOSQATask("PHOS") ; + AliAnalysisDataContainer * phosIn = ag->ConnectInput(phos, TChain::Class(), 0) ; + ag->ConnectOuput(phos, TObjArray::Class(), 0) ; - taskList[5] = new AliT0QATask("T0") ; - taskInputList[5] = taskInputList[0] ; // only one top input container allowed - taskOutputList[5] = TObjArray::Class() ; + AliEMCALQATask *emcal = new AliEMCALQATask("EMCal") ; + ag->ConnectInput(emcal, phosIn, 0) ; + ag->ConnectOuput(emcal, TObjArray::Class(), 0) ; - taskList[6] = new AliMUONQATask("MUON") ; - taskInputList[6] = taskInputList[0] ; // only one top input container allowed - taskOutputList[6] = TObjArray::Class() ; - - taskList[7] = new AliFMDQATask("FMD") ; - taskInputList[7] = taskInputList[0] ; // only one top input container allowed - taskOutputList[7] = TObjArray::Class() ; + AliPMDQATask * pmd = new AliPMDQATask("PMD") ; + ag->ConnectInput(pmd, phosIn, 0) ; + ag->ConnectOuput(pmd, TObjArray::Class(), 0) ; + + AliAnalysisTaskPt * pt = new AliAnalysisTaskPt("Pt") ; + ag->ConnectInput(pt, phosIn, 0) ; + ag->ConnectOuput(pt, TObjArray::Class(), 0) ; + + AliHMPIDQATask * hmpid= new AliHMPIDQATask("HMPID") ; + ag->ConnectInput(hmpid, phosIn, 0) ; + ag->ConnectOuput(hmpid, TObjArray::Class(), 0) ; + + AliT0QATask * t0 = new AliT0QATask("T0") ; + ag->ConnectInput(t0, phosIn, 0) ; + ag->ConnectOuput(t0, TObjArray::Class(), 0) ; + + AliMUONQATask * muon = new AliMUONQATask("MUON") ; + ag->ConnectInput(muon, phosIn, 0) ; + ag->ConnectOuput(muon, TObjArray::Class(), 0) ; - ag->SetTasks(knumberOfTasks, taskList, taskInputList, taskOutputList) ; + AliTRDQATask * trd = new AliTRDQATask("TRD") ; + ag->ConnectInput(trd, phosIn, 0) ; + ag->ConnectOuput(trd, TObjArray::Class(), 0) ; + + AliTOFQATask * tof = new AliTOFQATask("TOF") ; + ag->ConnectInput(tof, phosIn, 0) ; + ag->ConnectOuput(tof, TObjArray::Class(), 0) ; + + AliVZEROQATask * vzero = new AliVZEROQATask("VZERO") ; + ag->ConnectInput(vzero, phosIn, 0) ; + ag->ConnectOuput(vzero, TObjArray::Class(), 0) ; + + AliFMDQATask * fmd = new AliFMDQATask("FMD") ; + ag->ConnectInput(fmd, phosIn, 0) ; + ag->ConnectOuput(fmd, TObjArray::Class(), 0) ; // get the data to analyze // definition of Tag cuts const char * runCuts = 0x0 ; - const char * evtCuts = "fEventTag.fNPHOSClustersMin == 1 && fEventTag.fNEMCALClustersMin == 1" ; + const char * evtCuts = 0x0 ; + const char * lhcCuts = 0x0 ; + const char * detCuts = 0x0 ; + +//"fEventTag.fNPHOSClustersMin == 1 && fEventTag.fNEMCALClustersMin == 1" ; TString input = gSystem->Getenv("ANA_INPUT") ; @@ -118,10 +142,10 @@ void ana() //create the ESD collection from the tag collection input.ReplaceAll("tag?", "") ; const char * collESD = "esdCollection.xml" ; - ag->MakeEsdCollectionFromTagCollection(runCuts, evtCuts, input.Data(), collESD) ; + ag->MakeEsdCollectionFromTagCollection(runCuts, lhcCuts, detCuts, evtCuts, input.Data(), collESD) ; sprintf(argument, "esd?%s", collESD) ; } else if ( input.Contains("esd?") ) - argument = input.Data() ; + sprintf(argument, "%s", input.Data()) ; ag->Process(argument) ; } else { @@ -130,9 +154,35 @@ void ana() // input = "alien:///alice/cern.ch/user/a/aliprod/prod2006_2/output_pp/105/411/AliESDs.root" ; // analysisChain->AddFile(input); input = "AliESDs.root" ; - analysisChain->AddFile(input); + const char * kInDir = gSystem->Getenv("OUTDIR") ; + if ( kInDir ) { + if ( ! gSystem->cd(kInDir) ) { + printf("%s does not exist\n", kInDir) ; + return ; + } + Int_t event, skipped=0 ; + char file[120] ; + for (event = 0 ; event < kEvent ; event++) { + sprintf(file, "%s/%d/AliESDs.root", kInDir,event) ; + TFile * fESD = 0 ; + if ( fESD = TFile::Open(file)) + if ( fESD->Get("esdTree") ) { + printf("++++ Adding %s\n", file) ; + analysisChain->AddFile(file); + } + else { + printf("---- Skipping %s\n", file) ; + skipped++ ; + } + } + printf("number of entries # %lld, skipped %d\n", analysisChain->GetEntries(), skipped*100) ; + } + else + analysisChain->AddFile(input); + ag->Process(analysisChain) ; } + return ; } //______________________________________________________________________ @@ -145,17 +195,3 @@ void Merge(const char * xml, const char * sub, const char * out) ag->Merge(xml, sub, out) ; } -//______________________________________________________________________ -void test(const char * fcollection1) -{ - AliXMLCollection collection1(fcollection1); - TChain* analysisChain = new TChain("esdTree"); - - collection1.Reset(); - while (collection1.Next()) { - cout<<"Adding "<Add(collection1.GetTURL()); - } - - return ; -}