Skip to content

Commit

Permalink
This commit was manufactured by cvs2svn to create tag 'v4-05-12'.
Browse files Browse the repository at this point in the history
  • Loading branch information
(no author) committed May 9, 2007
1 parent 524ecd4 commit d575641
Show file tree
Hide file tree
Showing 869 changed files with 12,494 additions and 68,823 deletions.
4 changes: 2 additions & 2 deletions ALIROOT/binaliroot.pkg
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ ELIBSDIR:=



ELIBS:= MUONgeometry MUONrec MUONsim MUONbase MUONtrigger MUONraw MUONcalib MUONmapping \
ELIBS:= MUONgeometry MUONrec MUONsim MUONbase MUONraw MUONcalib MUONmapping \
TPCbase TPCsim TPCrec TPCfast \
ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase \
TRDsim TRDrec TRDfast \
Expand All @@ -21,7 +21,7 @@ ELIBS:= MUONgeometry MUONrec MUONsim MUONbase MUONtrigger MUONraw MUONcalib MUON
hijing TMEVSIM mevsim THbtp HBTP TEPEMGEN EPEMGEN \
FASTSIM microcern \
RAWDatabase RAWDatarec RAWDatasim \
HLTbase AliHLTSrc AliHLTComp AliHLTMisc AliHLTMUON MUONevaluation \
HLTbase AliHLTSrc AliHLTComp AliHLTMisc AliHLTMUON \
AliHLTHough AliHLTITS\
# THerwig herwig TPHIC

Expand Down
3 changes: 1 addition & 2 deletions ANALYSIS/ANALYSISLinkDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,14 @@
#pragma link off all functions;

#pragma link C++ class AliAnalysisDataContainer+;
#pragma link C++ class AliAnalysisDataWrapper+;
#pragma link C++ class AliAnalysisTask+;
#pragma link C++ class AliAnalysisDataSlot+;
#pragma link C++ class AliAnalysisManager+;

#pragma link C++ class AliAnalysisSelector+;

#ifdef WITHXML
#pragma link C++ class AliAnalysisGoodies+;
//#pragma link C++ class AliAnalysisGoodies+;
#pragma link C++ class AliTagAnalysis+;
#pragma link C++ class AliXMLCollection+;
#endif
Expand Down
96 changes: 1 addition & 95 deletions ANALYSIS/AliAnalysisDataContainer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ void AliAnalysisDataContainer::PrintContainer(Option_t *option, Int_t indent) co
opt.ToLower();
Bool_t dep = (opt.Contains("dep"))?kTRUE:kFALSE;
if (!dep) {
printf("%sContainer: %s type: %s POST_LOOP=%i", ind.Data(), GetName(), GetTitle(), IsPostEventLoop());
printf("%sContainer: %s type: %s", ind.Data(), GetName(), GetTitle());
if (fProducer)
printf("%s = Data producer: task %s",ind.Data(),fProducer->GetName());
else
Expand Down Expand Up @@ -354,98 +354,4 @@ void AliAnalysisDataContainer::SetProducer(AliAnalysisTask *prod, Int_t islot)
if (!prod->GetListOfTasks()->FindObject(cons)) prod->Add(cons);
}
}

//______________________________________________________________________________
AliAnalysisDataWrapper *AliAnalysisDataContainer::ExportData() const
{
// Wraps data for sending it through the net.
AliAnalysisDataWrapper *pack = 0;
if (!fData) return pack;
pack = new AliAnalysisDataWrapper(fData);
pack->SetName(fName.Data());
return pack;
}

//______________________________________________________________________________
void AliAnalysisDataContainer::ImportData(AliAnalysisDataWrapper *pack)
{
// Unwraps data from a data wrapper.
if (pack) {
fData = pack->Data();
fDataReady = kTRUE;
}
}

ClassImp (AliAnalysisDataWrapper)

//______________________________________________________________________________
AliAnalysisDataWrapper &AliAnalysisDataWrapper::operator=(const AliAnalysisDataWrapper &other)
{
// Assignment.
if (&other != this) {
TNamed::operator=(other);
fData = other.fData;
}
return *this;
}

//______________________________________________________________________________
Long64_t AliAnalysisDataWrapper::Merge(TCollection *list)
{
// Merge a list of containers with this one. Containers in the list must have
// data of the same type.
if (!fData) return 0;
if (!list || list->IsEmpty()) return 1;

printf("Merging %d data wrappers %s\n", list->GetSize()+1, GetName());
TMethodCall callEnv;
if (fData->InheritsFrom(TSeqCollection::Class())) {
TSeqCollection *coll = (TSeqCollection*)fData;
if (coll->IsEmpty()) return 0;
Int_t nentries = coll->GetEntries();
AliAnalysisDataWrapper *top;
TIter next(list);
TSeqCollection *collcrt = 0;
TList *list1 = 0;
for (Int_t i=0; i<nentries; i++) {
list1 = new TList();
top = new AliAnalysisDataWrapper(coll->At(i));
next.Reset();
while ((collcrt=(TSeqCollection*)next()))
list1->Add(new AliAnalysisDataWrapper(collcrt->At(i)));
if (!top->Merge(list1)) {
list1->Delete();
delete list1;
return 0;
}
list1->Delete();
delete list1;
}
return nentries;
}

if (fData->IsA())
callEnv.InitWithPrototype(fData->IsA(), "Merge", "TCollection*");
if (!callEnv.IsValid()) {
cout << "No merge interface for data stored by " << GetName() << ". Merging not possible !" << endl;
return 1;
}

TIter next(list);
AliAnalysisDataWrapper *cont;
// Make a list where to temporary store the data to be merged.
TList *collectionData = new TList();
Int_t count = 0; // object counter
while ((cont=(AliAnalysisDataWrapper*)next())) {
TObject *data = cont->Data();
if (!data) continue;
if (strcmp(cont->GetName(), GetName())) continue;
collectionData->Add(data);
count++;
}
callEnv.SetParam((Long_t) collectionData);
callEnv.Execute(fData);
delete collectionData;

return count+1;
}
38 changes: 0 additions & 38 deletions ANALYSIS/AliAnalysisDataContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class TClass;
class TObjArray;
class TCollection;
class AliAnalysisTask;
class AliAnalysisDataWrapper;
class AliESD;

class AliAnalysisDataContainer : public TNamed {
Expand All @@ -38,9 +37,6 @@ enum ENotifyMessage {
kSaveData,
kFileChange
};
enum EAnalysisContainerFlags {
kPostEventLoop = BIT(14)
};
AliAnalysisDataContainer();
AliAnalysisDataContainer(const AliAnalysisDataContainer &cont);
AliAnalysisDataContainer(const char *name, TClass *type);
Expand All @@ -59,17 +55,12 @@ enum EAnalysisContainerFlags {
void ResetDataReady() {fDataReady = kFALSE;}
virtual Bool_t SetData(TObject *data, Option_t *option="");
void SetDataOwned(Bool_t flag) {fOwnedData = flag;}
void SetPostEventLoop(Bool_t flag=kTRUE) {TObject::SetBit(kPostEventLoop,flag);}
void SetFileName(const char *filename) {fFileName = filename;}
void SetProducer(AliAnalysisTask *prod, Int_t islot);
void AddConsumer(AliAnalysisTask *cons, Int_t islot);
void DeleteData();
// Wrapping
AliAnalysisDataWrapper *ExportData() const;
void ImportData(AliAnalysisDataWrapper *pack);
// Container status checking
Bool_t IsDataReady() const {return fDataReady;}
Bool_t IsPostEventLoop() const {return TObject::TestBit(kPostEventLoop);}
Bool_t IsOwnedData() const {return fOwnedData;}
Bool_t ClientsExecuted() const;
Bool_t HasConsumers() const {return (fConsumers != 0);}
Expand All @@ -95,33 +86,4 @@ enum EAnalysisContainerFlags {

ClassDef(AliAnalysisDataContainer,1) // Class describing a data container for analysis
};

//==============================================================================
// AliAnalysysDataWrapper - A basic wrapper for exchanging via the network
// the data held by AliAnalysisDataContainer between the master and the client
// in PROOF case.
//==============================================================================

class AliAnalysisDataWrapper : public TNamed {

public:
AliAnalysisDataWrapper() : TNamed(), fData(NULL) {}
AliAnalysisDataWrapper(TObject *data) : TNamed(), fData(data) {}
AliAnalysisDataWrapper(const AliAnalysisDataWrapper &other)
: TNamed(other), fData(other.fData) {}
virtual ~AliAnalysisDataWrapper() {}

// Assignment
AliAnalysisDataWrapper &operator=(const AliAnalysisDataWrapper &other);

TObject *Data() const {return fData;}
// Merging
virtual Long64_t Merge(TCollection *list);

protected:
TObject *fData; // Wrapped data

ClassDef(AliAnalysisDataWrapper, 1) // Data wrapper class for exchange via the net
};

#endif
28 changes: 2 additions & 26 deletions ANALYSIS/AliAnalysisDataSlot.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
#include <TROOT.h>
#include <TClass.h>
#include <TTree.h>
#include <TLeaf.h>

#include "AliAnalysisDataSlot.h"
#include "AliAnalysisTask.h"
Expand Down Expand Up @@ -138,37 +137,14 @@ void *AliAnalysisDataSlot::GetBranchAddress(const char *branchname) const
return br->GetAddress();
}

//______________________________________________________________________________
Int_t AliAnalysisDataSlot::EnableBranch(const char *bname, TTree *tree)
{
// Static method to enable recursively a branch in a tree (why this in not in ROOT?)
TBranch *branch = tree->GetBranch(bname);
Int_t count = 0;
// static Int_t indent = 0;
if (!branch) return count;
// TString s;
// for (Int_t i=0; i<indent; i++) s += " ";
count++;
// printf("%sbranch %s: kDoNotProcess=%d\n",s.Data(), branch->GetName(), branch->TestBit(kDoNotProcess));
branch->SetBit(kDoNotProcess, kFALSE);
TIter next(branch->GetListOfBranches());
TBranch *branch_sub;
// Activate all sub-branches
// indent++;
while ((branch_sub=(TBranch*)next())) {
count += AliAnalysisDataSlot::EnableBranch(branch_sub->GetName(), tree);
}
// indent--;
return count;
}

//______________________________________________________________________________
Bool_t AliAnalysisDataSlot::SetBranchAddress(const char *branchname, void *address)
{
// Set a branch address for input tree. To be called during MyTask::Init()
// only if GetBranchAddress() returns a NULL pointer for a tree-type slot.
if (GetBranchAddress(branchname)) {
Error("SetBranchAddress","Branch address for %s already set by other task. Call first GetBranchAddress() in %s::ConnectInputData()",branchname, fParent->GetName());
cout<<"Branch address for "<<branchname<<" already set by other task. Call first GetBranchAddress() in "<<fParent->GetName()<<"::Init()"<<endl;
//AliError(Form("Branch address for %s already set by other task. Call first GetBranchAddress() in %s::Init()",branchname, fParent->GetName()));
return kFALSE;
}
TTree *tree = (TTree*)GetData();
Expand Down
2 changes: 0 additions & 2 deletions ANALYSIS/AliAnalysisDataSlot.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#endif

class TClass;
class TTree;
class AliAnalysisDataContainer;
class AliAnalysisTask;

Expand All @@ -34,7 +33,6 @@ class AliAnalysisDataSlot : public TNamed {
AliAnalysisDataSlot &operator=(const AliAnalysisDataSlot &slot);
// Connect some container to the slot
Bool_t ConnectContainer(AliAnalysisDataContainer *cont);
static Int_t EnableBranch(const char *bname, TTree *tree);
// Getters
void *GetBranchAddress(const char *branch) const;
Bool_t SetBranchAddress(const char *branch, void *address);
Expand Down
Loading

0 comments on commit d575641

Please sign in to comment.